2010-04-30 44 views
4

我可以從我的頁面調用我自定義的Greasemonkey的函數()嗎?從網頁調用Greasemonkey功能

例如,

我創建包含do_this()功能的GM腳本。 我希望my-web-site.com調用do_this()函數。 但我不能。

我知道,我可以通過做unsafeWindow.do_this(),但這樣做可以防止 我調用GM_xmlhttpRequest()。

任何想法?

回答

0

不,GM_ *函數不能從網頁訪問。

3

我剛剛有同樣的問題。你可以找到很好的信息here in the wiki。我會建議使用腳本注入將所需的代碼插入到文檔中。這樣它就會像在頁面的源代碼中那樣運行。你不能在那裏使用GM_函數,但是你可以結合使用腳本注入(例如檢索一個變量)和所有GM_函數的經典greasemonkey腳本(例如,你可以使用你讀取的變量並將它們與GM_xmlhttpRequest ())。

此外,諸如腳本注入等技術與unsafeWindow相比具有多個安全相關優勢。

我希望有幫助。

6

這裏的例子是工作,首先要創建元素,則的addEventListener

// ==UserScript== 
// @name   GM addEventListener Function Test 
// @namespace  ewwink.com 
// @description GM addEventListener Function Test 
// @include  http://* 
// ==/UserScript== 

document.body.innerHTML+='<input type="image" id="alertMeID" onclick="do_this()" style="position:fixed;top:0;left:0" src="http://i55.tinypic.com/2nly5wz.gif" />'; 

document.getElementById('alertMeID').addEventListener('click', do_this, false); 

function do_this(){ 
    alert('hello World!, today is: '+new Date()) 
} 
+0

謝謝你,那工作和在問題陳述的問題相匹配。 – Dereckson 2013-03-22 10:03:56