2011-04-18 130 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