2009-12-16 30 views
9

Tôi muốn chuẩn một số mã Javascript trong trình duyệt, nhưng nó có thể kích hoạt cửa sổ bật lên "Cảnh báo: Không phản hồi" của Firefox. Điều này cho phép người dùng nhấp vào "Dừng tập lệnh" trong trường hợp trình duyệt bị bắt trong một hàm chạy trốn. Trong khi cửa sổ bật lên được hiển thị, chức năng hiện đang chạy đã bị tạm dừng. Đây không phải là lý tưởng, do đó, có một cách để chạy điểm chuẩn của tôi khác nhau như vậy mà Firefox không bật cảnh báo này và làm hỏng kết quả của tôi?Làm thế nào để tránh popup không phản hồi trong Firefox với Javascript chạy dài?

Trả lời

11

Trong bài phát biểu kiểu thanh firefox của about: config

Bạn muốn thay đổi dom.max_script_run_time phải đủ lớn cho các kịch bản của bạn để chạy.

+7

Anh ấy có phải làm điều đó cho mọi người dùng của trang không? – Oded

+7

Anh ấy đang sử dụng nó để đo điểm chuẩn - Tôi không nghĩ có những người dùng khác. – Annie

9

Bạn phải chia nhỏ hành động dài thành những hành động nhỏ hơn và thực hiện chúng lần lượt. Điều này cũng sẽ cho phép một dấu hiệu tiến triển tốt hơn.

http://www.sonofsofaman.com/hobbies/code/settimeout.asp

+2

Bạn có thể xây dựng không? Một ví dụ đơn giản, có thể? – spoulson

+0

Dưới đây là ví dụ về cách sử dụng setTimeout để chia nhỏ hoạt động của javascript: http://www.sonofsofaman.com/hobbies/code/settimeout.asp Nếu bạn đang làm điểm chuẩn, hãy đảm bảo rằng bạn cho phép mã chạy đủ lâu để bù đắp cho độ phân giải hẹn giờ. Có thể bạn sẽ muốn đọc nội dung này: http://ejohn.org/blog/accuracy-of-javascript-time/ – Annie

+0

Liên kết đó dường như bị hỏng. Bạn có thể giải thích về cách làm điều đó trong câu trả lời của bạn? – Chris

0

Mã dưới đây giải quyết vấn đề đó cho tôi. ..

<script type="text/javascript"> 
    function downloadJSAtOnload() { 
    var element = document.createElement("script"); 
    element.src = "deferredfunctions.js"; 
    document.body.appendChild(element); 
    } 
    if (window.addEventListener) 
    window.addEventListener("load", downloadJSAtOnload, false); 
    else if (window.attachEvent) 
    window.attachEvent("onload", downloadJSAtOnload); 
    else window.onload = downloadJSAtOnload; 
</script> 
Các vấn đề liên quan