使用 self.port.on 时,firefox 内容脚本中的变量未更新
Variable not updating in firefox content script when using self.port.on
我正在尝试更新版本 var,但它并没有按照我认为应该的方式工作。例如,当我这样做时:
self.port.on("get-version", ver => { version = ver; alert(version); });
我收到一个关于版本号的警告,但是 HTML 仍然是 0.0.0,我用它来定义内容脚本开头的版本变量。
main.js
pageMod.PageMod({
include: "https://na6.salesforce.com/500?fcf=00B8000000*",
contentStyleFile: ["./css/salesforceoverlay.css"],
contentScriptFile: ["./external/jquery/jquery-1.11.3.min.js", "./js/salesforceoverlay.js"],
onAttach: function(worker) { worker.port.emit('get-version', self.version); }
});
内容-script.js
var version = "0.0.0";
self.port.on("get-version", ver => { version = ver; alert(version); });
$("body").append("<div id='helpSection' class='overlay'>\
<p><b>Salesforce Overlay: " + version + "</b>\
//more paragraphs/text and such...
</p>\
</div>");
您只是在更新变量,而不是过去从该变量派生的任何内容,即HTML内容。
这与 FF 插件代码无关,它是 属性 HTML DOM 和 javascript 的一般工作方式。
Javascript 承诺就是答案。从那以后,我将其重写为当前的网络扩展格式,因此代码消失了,但问题出在 synchronous/asynchronous 代码上。 Javascript 承诺通过强制同步行为解决了我的问题。
我正在尝试更新版本 var,但它并没有按照我认为应该的方式工作。例如,当我这样做时:
self.port.on("get-version", ver => { version = ver; alert(version); });
我收到一个关于版本号的警告,但是 HTML 仍然是 0.0.0,我用它来定义内容脚本开头的版本变量。
main.js
pageMod.PageMod({
include: "https://na6.salesforce.com/500?fcf=00B8000000*",
contentStyleFile: ["./css/salesforceoverlay.css"],
contentScriptFile: ["./external/jquery/jquery-1.11.3.min.js", "./js/salesforceoverlay.js"],
onAttach: function(worker) { worker.port.emit('get-version', self.version); }
});
内容-script.js
var version = "0.0.0";
self.port.on("get-version", ver => { version = ver; alert(version); });
$("body").append("<div id='helpSection' class='overlay'>\
<p><b>Salesforce Overlay: " + version + "</b>\
//more paragraphs/text and such...
</p>\
</div>");
您只是在更新变量,而不是过去从该变量派生的任何内容,即HTML内容。
这与 FF 插件代码无关,它是 属性 HTML DOM 和 javascript 的一般工作方式。
Javascript 承诺就是答案。从那以后,我将其重写为当前的网络扩展格式,因此代码消失了,但问题出在 synchronous/asynchronous 代码上。 Javascript 承诺通过强制同步行为解决了我的问题。