我可以从我的页面调用我的自定义Greasemonkey的function()吗?
例如,
我创建了一个包含do_this()函数的GM脚本。 我希望my-web-site.com调用do_this()函数。 但我不能。
我知道,我可以通过做不安全的Wowow.do_this()但这样做可以防止 我来自GM_xmlhttpRequest()。
有什么想法吗?
答案 0 :(得分: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())
}
答案 1 :(得分:3)
我遇到了同样的问题。您可以找到好的信息here in the wiki。我建议使用脚本注入将所需的代码插入到文档中。这样它就会像在页面的源代码中一样运行。你不能在那里使用GM_函数,但你可以使用脚本注入(例如检索变量)和使用所有GM_函数的经典greasemonkey脚本的组合(例如,您可以使用您阅读的变量并使用GM_xmlhttpRequest发布它们())。
此外,脚本注入等技术与unsafeWindow相比具有一些与安全相关的优势。
我希望有所帮助。
答案 2 :(得分:1)
我自己从未使用过此版本,但这里是解决方法http://wiki.greasespot.net/0.7.20080121.0%2B_compatibility。
unsafeWindow.someObject.registerCallback(function() {
var value = "bar";
setTimeout(function() {
GM_setValue("foo", value);
}, 0);
});
答案 3 :(得分:0)
不,GM_ *功能无法从网页访问。