2011-04-18 129 views
3

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

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

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

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

+0

为什么这个问题被低估?这对我来说似乎是一个非常明确的问题。 – Pointy 2011-04-18 14:21:39

+0

什么是服务器页面包含的'函数? – wong2 2011-04-18 14:44:08

+0

$()和其他几个人http://www.craigslist.org/js/jquery.js – fbas 2011-04-18 15:18:39

回答

2

这有点不好意思,但有时你可以通过创建一个触发函数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); 
0

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

但是请确保您了解使用unsafeWindow引起的安全威胁 - 它们描述在http://wiki.greasespot.net/UnsafeWindow