Sự cố:Tải JS bên ngoài đồng bộ với zombie.js
Tôi đang sử dụng zombie.js để kiểm tra javascript phía máy khách, nhưng tôi đang gặp sự cố. Zombie.js không cung cấp thực thi thẻ <script>
đồng bộ và thực tế dường như không thực thi các tệp JS bên ngoài. Một thử nghiệm cơ bản xác nhận điều này:
<script type="text/javascript" src="test1.js"></script>
<script type="text/javascript" src="test2.js"></script>
<script type="text/javascript" src="test3.js"></script>
<script type="text/javascript">
console.log("Inline javascript.");
</script>
Mỗi thử nghiệm # .js chứa một dòng duy nhất: console.log("TEST#.JS");
Khi tôi làm điều này trong một trình duyệt thông thường, giao diện điều khiển hiển thị mong đợi:
TEST1.JS
TEST2.JS
TEST3.JS
Inline javascript.
Nhưng khi tôi chạy nó với zombie.js, tôi chỉ thấy một dòng duy nhất Inline javascript.
Đây là những gì tôi đã cố gắng giải quyết vấn đề:
- sử dụng
document.createElement
để tự động nối thêm một thẻ script để tài liệu - sử dụng
document.write
thêm khối kịch bản vào html - sử dụng một
setTimeout
trênconsole.log("Inline javascript")
kết hợp với 1 và 2 để cung cấp cho các kịch bản thử nghiệm một số thời gian để tải.
Có cách nào để giải quyết vấn đề này, ngoài việc đặt mã JS từ tất cả các tệp JS bên ngoài của tôi vào khối <script>
lớn?
Bạn đã coi PhantomJS thay thế cho Zombie chưa? – Spudley
Vâng, tôi bắt đầu với PhantomJS, nhưng có một số lỗi (ví dụ: navigator.onLine luôn luôn là sai, vv) khiến tôi rời xa nó. – laker