Greasemonkey脚本,从其他页面脚本调用函数

时间:2011-04-18 14:19:53

标签: jquery greasemonkey

我正在编写一个greasemonkey脚本的页面已经包含了jquery,所以我想知道是否/如何访问已包含的jquery函数,而不是在我的greasemonkey脚本中包含jquery。

在我的尝试中,如果将jquery包含在我的脚本中,则jquery可以正常工作。但我找不到服务器页面包含的功能。我无法控制服务器。

如果我可以访问这些功能,大多只是好奇。

最糟糕的情况我会在我的脚本中包含jquery代码,所以这不是一个严重的问题。

2 个答案:

答案 0 :(得分:2)

有点hacky,但有时您可以通过创建触发器功能HTML元素并将其插入页面来触发页面上的功能。然后,当您想要触发该功能时,使用Greasemonkey单击该链接。

例如,假设页面上有一个名为“runGame()”的函数。在您的Greasemonkey脚本的早期,您有:

 var triggerHTML = "<a id=\"triggerfunction\" onclick=\"runGame()\">triggerfunction</a>";

然后将其插入页面中的适当位置。例如,假设您找到了一个可以很好地坐在其前面的地方:

 target.parentNode.insertBefore(triggerHTML, target);

然后当你想运行该函数时,执行

 var evt = document.createEvent("MouseEvents");
 evt.initMouseEvent("click", true, true, window, 
            0, 0, 0, 0, 0, 
            false, false, false, false, 
            0, null);
 var triggerGame= document.getElementById("triggerfunction");
 triggerGame.dispatchEvent(evt);

答案 1 :(得分:0)

您应该使用unsafeWindow来调用页面脚本,例如而不是$你会写unsafeWindow.$

但请确保您了解因使用不安全的窗口而产生的安全威胁 - 它们在http://wiki.greasespot.net/UnsafeWindow处描述。