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

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

  •  30
  • Asa Ayers  · 技术社区  · 17 年前

    我有一个非常简单的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 回复  |  直到 17 年前
        1
  •  25
  •   Maiku Mori    17 年前

    尝试使用: unsafeWindow.myFunction();

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

        2
  •  16
  •   Paul Dixon    17 年前

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

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

    它有点丑。还有 unsafeWindow GreaseMonkey也提供了该软件,但作者建议不要使用它。

    unsafeWindow.myFunction();
    

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

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

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

        3
  •  7
  •   Sophia    17 年前

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

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

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

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