Javascript 如何让greasemonkey在页面加载后调用函数

Javascript 如何让greasemonkey在页面加载后调用函数,javascript,greasemonkey,Javascript,Greasemonkey,我有一个非常简单的greasemonkey脚本,我想调用页面上已经存在的javascript函数。我看了文档,似乎什么都不管用 window.setTimeout(function() { alert('test') // This alert works, but nothing after it does myFunction() // undefined window.myFunction() // undefined document.myFunctio

我有一个非常简单的greasemonkey脚本,我想调用页面上已经存在的javascript函数。我看了文档,似乎什么都不管用

window.setTimeout(function() { 
    alert('test') // This alert works, but nothing after it does
    myFunction() // undefined
    window.myFunction() // undefined
    document.myFunction() // undefined
}, 1000);
尝试使用: unsafeWindow.myFunction()


更多详细信息-

在原始页面中调用函数的一种方法如下:

location.href = "javascript:void(myFunction());";
这有点难看。GreaseMonkey也提供了同样的功能,但作者建议不要使用它

unsafeWindow.myFunction();
看起来更整洁,但请确保您了解其后果。从手册中:

不安全窗口绕过Greasemonkey的 基于XPCNativeWrapper的安全模型, 它的存在是为了确保 恶意网页无法更改 以使…成为…的方式 greasemonkey脚本(执行 拥有比普通人更多的特权 在网页中运行的Javascript)做什么 他们的作者或用户所做的事情 不打算。用户脚本应该 因此,避免打电话或打电话 其他方式取决于任何属性 在非安全窗口上-特别是如果 对任意网页执行, 例如带有@include*,其中 页面作者可能已经颠覆了 以这种方式保护环境


换句话说,如果使用unsafeWindow,脚本将提升原始页面脚本的可用权限。

您可以尝试使用javascript事件侦听器

它们在响应发生的对象事件(如页面加载)时执行代码

例如,要在页面加载时执行代码:

window.addEventListener('load', function () 
{
    /* code goes here */
}

谢谢,我将您的答案标记为已接受的答案,因为该链接提供了一些备选答案。我发现,将脚本附加到页面确实是满足我需要的最佳解决方案。如果您希望脚本更兼容(我在使用unsafeWindow TamperMonkey for Chrome时遇到一些问题),我建议使用
locaction.href='javascript:…'
而不是unsafeWindow。location.href=“javascript:…”在大多数情况下,更好的方法是在“}”之后缺少一个右括号“')。