使用 self.port.on 时,火狐内容脚本中的变量未更新
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,我用它来定义内容脚本开头的版本变量。
主.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); }
});
内容脚本.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承诺就是答案。此后,我将其重写为当前的Web扩展格式,因此代码消失了,但是问题出在同步/异步代码上。Javascript承诺通过强制同步行为解决了我的问题。
相关文章:
- 在 ActionLink mvc3 Razor 中使用 java 脚本变量
- Rails 4-使用脚本变量作为按钮值
- 如何使用java脚本变量使用Django反向URL
- 如何将PHP中的变量插入到具有直接变量的Java脚本变量中
- 如何在scriplet中使用脚本变量
- 将java脚本变量传递给相同的表单操作php文件参数
- 将 PHP 数据从mysql_fetch_array保存为脚本变量
- 如何在 AngularJS 中访问模板脚本变量
- 将 PHP 变量保存到函数中的脚本变量
- 如何在 PHP 标签中访问 java 脚本变量
- 检索 JSP 脚本变量中的隐藏输入值,而无需提交页面
- 咖啡脚本变量声明放在错误的位置
- 如何检查两个 java 脚本变量是否不同
- 在另一个 html 文件中获取 java 脚本变量
- 删除开头的双引号&结束于JSON对象/字符串或Java脚本变量
- drupal7为页眉和页脚拆分脚本变量
- 将java脚本变量的值插入到php变量中
- 将脚本变量限制为Google sheets中的特定工作表
- 如何将html脚本变量传递给控制器
- 如何在锚点的rel属性中传递java脚本变量的值