在我的内容脚本中,我有一个元素(更具体地说,是element.addEventListener("mouseover", pageFunction("foo", "bar"));
标记),我需要向其中添加一个事件。但是,事件处理程序是在页面JS中定义的,我不知道如何将其附加到扩展中我元素的事件中。我想要实现的是:
location.href="javascript:pageFunction(); void 0";
我还阅读了其他问题,例如this one,它建议注入代码或使用selection.cells
,但我不知道如何在我的情况下应用它们。
答案 0 :(得分:0)
根据MDN参考there is a way for page and content scripts to communicate with each other。
在Firefox *中,内容脚本中的DOM对象获得一个额外的属性
wrappedJSObject
。这是对象的“未包装”版本,其中包括任何页面脚本对该对象所做的任何更改。
现在,在您的代码中,您将立即调用该函数,而不是将侦听器传递给引用。为了解决这个问题,您应该将函数调用包装在箭头函数中,以防止出现这种情况:
element.addEventListener("mouseover", () => window.wrappedJSObject.pageFunction("foo", "bar"), false);
∗我找不到有关是否也应将此方法用于Chrome的信息。