我正在尝试用自己的代码替换网站的window.onload
功能:
window.onload = function () {alert("TEST");};
然而,据我所知,它不起作用(我没有警报)。我收录了// @run-at document-end
。我认为这是一个及时拦截window.onload
的问题。
答案 0 :(得分:2)
document-end在DOMContentLoaded事件处执行脚本(另请参阅Tampermonkey docs),因此如果页面很简单,onload事件可能已被触发,您的功能已赢得& #39; t run。
如果您要禁用/覆盖网页的window.onload
功能:
// @run-at document-start
// @grant none
....................
window.onload = function () {alert("TEST");};
第一行将指示Tampermonkey / Greasemonkey尝试尽快注入您的用户脚本,第二行将在网页的上下文/环境中运行您的用户脚本,因为默认情况下所有用户脚本都在带有代理DOM的单独沙箱中运行并且无法设置/调用网页功能,反之亦然。
如果您已经有一些@grant
个密钥,请使用unsafeWindow
代替:
// @run-at document-start
// @grant unsafeWindow
// @grant GM_addStyle
....................
unsafeWindow.onload = function () {alert("TEST");};
答案 1 :(得分:0)
您的代码应该适用于大多数浏览器。尝试使shure,当您的代码执行时,该窗口尚未处于加载状态。 以下代码将被调用,即使窗口已经加载,也会调用函数“onload”。
var onload = function()
{
alert("TEST");
};
if (document.readyState === "complete")
onload();
else
(addEventListener || attachEvent).call(window, addEventListener ? "load" : "onload", onload);