firefox-sdk:重新定义内容脚本函数
firefox sdk: redefine content-script function
我有firefox插件,它向所有页面注入两个内容脚本。
var workers = [];
pageMod.PageMod({
include: "*",
contentScriptFile: [
self.data.url("content/autofill/lib_generic.js"),
self.data.url("content/autofill/lib.js"),
],
// add worker to the list
onAttach: function(worker)
{
workers.push(worker);
var filename = getDomainSpecificFilename(worker.contentURL);
worker.on("detach", function()
{
var index = workers.indexOf(worker);
if (index >= 0)
workers.splice(index, 1);
});
}
});
lib_generic.js
包含一个名为apply_forms(...)
的函数(其描述并不重要)。该函数是从lib.js
文件中调用的。但是这个过程不适用于多个页面,所以对于每个这样的页面,我都有一个特定的脚本——这些文件也只包含一个名为apply_forms(...)
的函数。
我有一个函数,它将当前域作为输入,并返回所需特定脚本的名称,如果应该使用泛型,则返回false
。
我需要的是——必要时——用特定的apply_forms
重新定义通用的apply_forms
。
我试过使用
tabs.activeTab.attach({
contentScriptFile: [ filename ]
});
worker.port.emit("apply_forms_loaded");
并且在其中一个内容脚本中:
var apply_forms_loaded=false;
self.port.on("apply_forms_loaded", function() {
console.log("LOADED");
apply_forms_loaded = true;
});
整个过程是这样开始的:
var timer;
timer = setInterval(function(){
if (apply_forms_loaded) {
clearInterval(timer);
start(); // apply_forms is called somewhere inside this call
}
}, 10);
不幸的是,tabs.activeTab.attach
似乎在不同的上下文中注入了内容脚本,所以通用函数被称为allways。
我能做些什么来说服activeTab
在相同的上下文中添加内容脚本吗?还是应该用不同的方式?(然后是哪一个)
或者问题可能是——我不知道——当我发送apply_forms_loaded
消息时,内容脚本并没有完全注入?
我一直在尝试为Chrome重新定义函数定义,并使其发挥作用(url到SO问题)
谢谢你的建议。
没错,通过pagemod添加的脚本与通过tabs.attach添加的脚本位于不同的JS沙盒中。您可以使用新的exportFunction()函数将函数注入实际窗口中,这样函数就在实际窗口中并且总是被覆盖。然后您可以从unsafeWindow调用它。。
相关文章:
- AngularJS:如何使用java脚本函数更改跨度的ng-show条件
- 无法将java脚本函数与Panel'绑定;s OnLoad事件
- Java脚本函数中的PHP(PCRE)验证
- 在HTML JavaScript头部分运行Google脚本函数
- Java脚本函数错误
- 如何调用绑定到angular元素的java脚本函数
- 为什么当我使用初始化触发器函数时,我总是找不到脚本函数:发送发票如果新
- 通过innerHTML注入脚本:函数与全局
- 如果我在 window.onbeforeunload 事件上确认是,我如何调用另一个 Java 脚本函数
- java 脚本函数中的日差
- Java脚本函数不工作
- 如何使用参数调用java脚本函数,其中参数来自字符串变量
- JAVA脚本函数中调用的ASP经典函数
- 如何在另一个java脚本函数中访问java脚本中动态html表中单元格的动态赋值
- 添加一个按钮,该按钮在单击时调用内容脚本函数
- 从java脚本函数调用ruby函数
- 未调用Java脚本函数
- 用户控制(.ascx)和java脚本函数
- 我用来禁用回车键的java脚本函数不起作用
- 如何在java脚本函数中传递php值