簡體   English   中英

window.load不會始終在chrome上觸發嗎?

[英]window.load doesn't fire always on chrome?

我有這個用戶腳本:

// ==UserScript==
// @name          test
// @namespace     test
// @description   show's an alert on load
// @include       http://*
// @include       https://*
// ==/UserScript==

window.addEventListener('load', function(){alert("loaded");}, false);

在所有頁面上的Firefox上都可以正常工作,但在某些情況下在Chrome上根本無法使用。

一個示例是該網站: http : //lexin.nada.kth.se/lexin/在地址中輸入鏈接並按Enter,正常加載頁面,但沒有彈出警報。 如果按F5刷新頁面,則會顯示彈出窗口。

這種奇怪的行為有什么解釋嗎?

問題的原因是文檔完全加載后有時會執行內容腳本。 使用以下內容腳本(“用戶腳本”)對此進行了說明:

// ==UserScript==
// @name          Test
// @namespace     Test
// @include       *
// ==/UserScript==

window.addEventListener('load', function(){alert("loaded");}, false);
alert(document.readyState);   // When this prints "complete", onload never runs

要解決此問題,請使用@run-at document-start元規則,該規則使腳本在創建文檔之前執行:

...
// @run-at   document-start
// ==/UserScript==

該呼叫可能在頁面上加載時間太晚。 將此代碼添加到頁面的最上方,看看是否可以解決。

如果不是,請發布一些其他信息。 (在哪里進行調用?頁面上有更多信息?這是從外部.js文件調用嗎?)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM