【问题标题】:calling Greasemonkey functions from web page [duplicate]从网页调用Greasemonkey函数[重复]
【发布时间】:2010-04-30 07:46:48
【问题描述】:

我可以从我的页面调用自定义 Greasemonkey 的 function() 吗?

例如,

我创建了一个包含 do_this() 函数的 GM 脚本。 我希望 my-web-site.com 调用 do_this() 函数。 但我不能。

我知道,我可以通过执行 unsafeWindow.do_this() 但这样做会阻止 我从调用 GM_xmlhttpRequest()。

有什么想法吗?

【问题讨论】:

    标签: greasemonkey


    【解决方案1】:

    这里是工作的例子,首先创建元素然后 addEventListener

    // ==UserScript==
    // @name           GM addEventListener Function Test
    // @namespace      ewwink.com
    // @description    GM addEventListener Function Test
    // @include        http://*
    // ==/UserScript==
    
    document.body.innerHTML+='<input  type="image" id="alertMeID" onclick="do_this()" style="position:fixed;top:0;left:0" src="http://i55.tinypic.com/2nly5wz.gif" />';
    
    document.getElementById('alertMeID').addEventListener('click', do_this, false);
    
    function do_this(){
      alert('hello World!, today is: '+new Date())
    }
    

    【讨论】:

    • 谢谢你,这很有效,并且符合问题中所述的问题。
    【解决方案2】:

    我也遇到了同样的问题。你可以找到很好的信息here in the wiki。我建议使用脚本注入将所需的代码插入到文档中。这样,它将像在页面的源代码中一样运行。您也不能在那里使用 GM_ 函数,但您可以将脚本注入(例如检索变量)和经典的greasemonkey脚本与所有 GM_ 函数结合使用(例如,您可以使用您读取的变量并将它们与 GM_xmlhttpRequest ())。

    此外,与 unsafeWindow 相比,脚本注入等技术具有多项与安全相关的优势。

    希望对你有帮助。

    【讨论】:

      【解决方案3】:

      我自己从未使用过这个,但这是解决方法http://wiki.greasespot.net/0.7.20080121.0%2B_compatibility

      unsafeWindow.someObject.registerCallback(function() {
          var value = "bar";
          setTimeout(function() {
          GM_setValue("foo", value);
          }, 0);
      });
      

      【讨论】:

        【解决方案4】:

        不,GM_* 功能无法从网页访问。

        【讨论】:

          猜你喜欢
          • 2011-06-27
          • 1970-01-01
          • 2016-12-25
          • 2013-05-28
          • 1970-01-01
          • 1970-01-01
          • 2021-12-14
          • 1970-01-01
          • 2012-06-11
          相关资源
          最近更新 更多