我正在編寫一個greasemonkey腳本的頁面已包含jquery,所以我想知道是否/如何訪問已包含的jquery函數,而不是在我的greasemonkey中包含jquery腳本。Greasemonkey腳本,從其他頁面腳本調用函數
在我的嘗試中,如果將jquery包含在我的腳本中,jquery可以正常工作。但我沒有找到服務器頁面包含的函數。我無法控制服務器。
大多隻是好奇,如果我可以訪問這些功能。
最糟糕的情況我會在我的腳本中包含jquery代碼,所以它不是一個嚴重的問題。
我正在編寫一個greasemonkey腳本的頁面已包含jquery,所以我想知道是否/如何訪問已包含的jquery函數,而不是在我的greasemonkey中包含jquery腳本。Greasemonkey腳本,從其他頁面腳本調用函數
在我的嘗試中,如果將jquery包含在我的腳本中,jquery可以正常工作。但我沒有找到服務器頁面包含的函數。我無法控制服務器。
大多隻是好奇,如果我可以訪問這些功能。
最糟糕的情況我會在我的腳本中包含jquery代碼,所以它不是一個嚴重的問題。
這有點不好意思,但有時你可以通過創建一個觸發函數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);
你應該叫頁面腳本使用unsafeWindow
,例如而不是$
,你會寫unsafeWindow.$
。
但是請確保您瞭解使用unsafeWindow引起的安全威脅 - 它們描述在http://wiki.greasespot.net/UnsafeWindow。
爲什麼這個問題被低估?這對我來說似乎是一個非常明確的問題。 – Pointy 2011-04-18 14:21:39
什麼是服務器頁面包含的'函數? – wong2 2011-04-18 14:44:08
$()和其他幾個人http://www.craigslist.org/js/jquery.js – fbas 2011-04-18 15:18:39