Javascript window.load不总是在chrome上启动吗?
我有一个用户脚本:Javascript window.load不总是在chrome上启动吗?,javascript,google-chrome,greasemonkey,onload,userscripts,Javascript,Google Chrome,Greasemonkey,Onload,Userscripts,我有一个用户脚本: // ==UserScript== // @name test // @namespace test // @description show's an alert on load // @include http://* // @include https://* // ==/UserScript== window.addEventListener('load', function(){alert("loaded");
// ==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上根本不起作用
一个例子是这个网站:
在地址中输入链接并按enter键,将正常加载页面,但不会弹出警报。如果按F5刷新页面,将出现弹出窗口
对这种奇怪的行为有什么解释吗?此呼叫可能在页面上加载得太晚了。将此代码添加到页面的最顶端,看看是否可以修复它
如果不是这样,请发布一些附加信息。在哪里打电话?页面上有更多信息吗?这是从外部.js文件调用的吗?问题的原因是,有时在文档已完全加载时执行内容脚本。这将使用以下内容脚本用户脚本进行说明:
// ==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
// ==/UserScript==
@mgraph window.onload all lower case这是一个用户脚本,这意味着如果你有chrome浏览器,你只需将它拖放到浏览器上。然后它会在每个页面上自动运行,在自己的沙箱中运行。