代码之家  ›  专栏  ›  技术社区  ›  Asa Ayers

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

  •  27
  • Asa Ayers  · 技术社区  · 16 年前

    我有一个非常简单的greasemonkey脚本,我想调用页面上已经存在的javascript函数。我已经读过文件了,似乎什么也没用

    window.setTimeout(function() { 
        alert('test') // This alert works, but nothing after it does
        myFunction() // undefined
        window.myFunction() // undefined
        document.myFunction() // undefined
    }, 1000);
    
    3 回复  |  直到 15 年前
        1
  •  25
  •   Maiku Mori    16 年前

    尝试使用: unsafewindow.myfunction();

    更多详细信息- http://wiki.greasespot.net/UnsafeWindow

        2
  •  16
  •   Paul Dixon    16 年前

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

    location.href = "javascript:void(myFunction());";
    

    有点难看。还有 unsafeWindow Greasemonkey也提供,但作者建议不要使用它。

    unsafeWindow.myFunction();
    

    看起来更整洁,但要确保你了解后果。从手册中:

    不安全窗口绕过Greasemonkey's 基于XpcNativeWrapper的安全模型, 以确保 恶意网页无法更改 以使 GreaseMonkey脚本(执行 拥有比普通人更多的特权 在网页中运行的javascript)做 他们的作者或用户所做的事情 不打算。用户脚本应该 因此,避免打电话或 其他方式取决于任何属性 在不安全窗口上-特别是如果他们 对任意网页执行, 例如那些带有@include*的,其中 网页作者可能已被颠覆 这样的环境。

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

        3
  •  7
  •   Sophia    15 年前

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

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

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

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