我可以從我的頁面調用我自定義的Greasemonkey的函數()嗎?從網頁調用Greasemonkey功能
例如,
我創建包含do_this()功能的GM腳本。 我希望my-web-site.com調用do_this()函數。 但我不能。
我知道,我可以通過做unsafeWindow.do_this(),但這樣做可以防止 我調用GM_xmlhttpRequest()。
任何想法?
我可以從我的頁面調用我自定義的Greasemonkey的函數()嗎?從網頁調用Greasemonkey功能
例如,
我創建包含do_this()功能的GM腳本。 我希望my-web-site.com調用do_this()函數。 但我不能。
我知道,我可以通過做unsafeWindow.do_this(),但這樣做可以防止 我調用GM_xmlhttpRequest()。
任何想法?
不,GM_ *函數不能從網頁訪問。
我剛剛有同樣的問題。你可以找到很好的信息here in the wiki。我會建議使用腳本注入將所需的代碼插入到文檔中。這樣它就會像在頁面的源代碼中那樣運行。你不能在那裏使用GM_函數,但是你可以結合使用腳本注入(例如檢索一個變量)和所有GM_函數的經典greasemonkey腳本(例如,你可以使用你讀取的變量並將它們與GM_xmlhttpRequest ())。
此外,諸如腳本注入等技術與unsafeWindow相比具有多個安全相關優勢。
我希望有幫助。
從來沒有使用過這個,但是這裏是解決方法http://wiki.greasespot.net/0.7.20080121.0%2B_compatibility。
unsafeWindow.someObject.registerCallback(function() {
var value = "bar";
setTimeout(function() {
GM_setValue("foo", value);
}, 0);
});
這裏的例子是工作,首先要創建元素,則的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())
}
謝謝你,那工作和在問題陳述的問題相匹配。 – Dereckson 2013-03-22 10:03:56