Tôi có một trang chạy nhiều mã javascript khác nhau, bao gồm gọi setTimeout()
. Nếu người dùng nhấp vào một liên kết để điều hướng đến một trang khác, tại thời điểm nào thì javascript trên trang này ngừng chạy và do đó mã của tôi được gọi bởi setTimeout sẽ không còn được gọi? ví dụ.Khi nào javascript ngừng chạy trên một trang sau khi một liên kết được nhấp?
- ngay sau khi liên kết được nhấp (Tôi biết điều này là sai)
- khi trình duyệt bắt đầu nhận trang mới
- một thời điểm nào khác?
Và điều này có khác với các trình duyệt chính khác nhau không?
nền
Tôi muốn biết điều này phần lớn vì sự quan tâm của hơn để giải quyết bất kỳ vấn đề cụ thể. Vấn đề khiến tôi suy nghĩ về điều này là tôi muốn làm điều gì đó khi người dùng nhấp vào một liên kết cụ thể trên một trang. Tôi muốn thực hiện một cuộc gọi ajax và xử lý kết quả, nhưng tôi không quá quan tâm nếu nó kết thúc trước khi trang được tải xuống. Vì vậy, tôi sẽ bắn một setTimeout() vào liên kết nhấp chuột và sau đó nếu tôi may mắn nó sẽ kết thúc nhưng nếu tôi không phải là nó sẽ không. Tôi tự hỏi trong hoàn cảnh nào nó sẽ hoạt động. Trong khi có thể có các giải pháp khác cho vấn đề đó, tôi không muốn giải pháp cho vấn đề tôi chỉ muốn biết câu trả lời cho câu hỏi đó.
Có lẽ chỉ sau sự kiện [onunload] (https://developer.mozilla.org/en-US/docs/DOM/window.onunload), nhưng tại sao lại quan trọng với bạn? –
_Which_ browser? –
* Các bộ hẹn giờ hoạt động * (mà 'setTimeout' thêm vào) sẽ bị xóa trong [các bước dọn dẹp tài liệu dỡ bỏ'] (http://www.w3.org/TR/html5/browsers.html#unloading-document-cleanup -steps), được gọi từ (trong số những thứ khác) ['unload document procedure'] (http://www.w3.org/TR/html5/browsers.html#unload-a-document).Tuy nhiên, tôi không chắc chắn khi nào chính xác những điều này được gọi trong quá trình [điều hướng] (http://www.w3.org/TR/html5/browsers.html#navigating-across-documents) – Bergi