gpt4 book ai didi

javascript - 从我的greasemonkey脚本中监听一个事件

转载 作者:行者123 更新时间:2023-12-02 14:24:53 26 4
gpt4 key购买 nike

我试图弄清楚如何从我的greasemonkey 脚本中监听事件发射器,但我不断收到访问冲突错误(访问对象的权限被拒绝)。

页面
该页面包含一个简单的事件发射器:

var emitter = function(){
this.events = {};
}

emitter.prototype.on = function(eventName, closure){
this.events[eventName] = this.events[eventName] || [];
this.events[eventName].push(closure);
};

emitter.prototype.emit = function(eventName, data){
if(this.events[eventName]){
this.events[eventName].forEach(function(fn){
return fn(data);
});
}
}

var test = new emitter();
test.emit('test', {data:'test'});

脚本
这会引发访问冲突错误(这曾经工作过一段时间,但我猜它已被修补或其他什么):

unsafeWindow.test.on('test', function(data){
console.log(data);
});

最佳答案

我设法让它工作。解决方案是通过 exportFunction(myFunction, unsafeWindow)

将回调函数导出到不安全上下文中

脚本部分应如下所示:

unsafeWindow.test.on('test', exportFunction(function(data){
console.log(data);
}, unsafeWindow));

非常感谢wOxxOm感谢指出这一点。

关于javascript - 从我的greasemonkey脚本中监听一个事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38356677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com