Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript window.load不总是在chrome上启动吗?_Javascript_Google Chrome_Greasemonkey_Onload_Userscripts - Fatal编程技术网

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浏览器,你只需将它拖放到浏览器上。然后它会在每个页面上自动运行,在自己的沙箱中运行。