我正在编写一个greasemonkey脚本的页面已经包含了jquery,所以我想知道是否/如何访问已包含的jquery函数,而不是在我的greasemonkey脚本中包含jquery。
在我的尝试中,如果将jquery包含在我的脚本中,则jquery可以正常工作。但我找不到服务器页面包含的功能。我无法控制服务器。
如果我可以访问这些功能,大多只是好奇。
最糟糕的情况我会在我的脚本中包含jquery代码,所以这不是一个严重的问题。
答案 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处描述。