Javascript 如何让greasemonkey在页面加载后调用函数
我有一个非常简单的greasemonkey脚本,我想调用页面上已经存在的javascript函数。我看了文档,似乎什么都不管用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
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:…”在大多数情况下,更好的方法是在“}”之后缺少一个右括号“')。