除非重新保存,否则不会加载扩展后台脚本

时间:2016-10-02 06:20:19

标签: javascript json xmlhttprequest firefox-addon manifest.json

对于Firefox,我点击浏览器图标按钮后会在新标签页中加载一个页面。页面的后台脚本在第一次运行时运行正常,但在重新加载页面时没有运行,在选项卡已打开时再次单击按钮,或者在关闭选项卡并打开另一个选项卡后运行。我必须重新保存脚本,强制卸载/重新加载扩展,以使其正常运行。 清单中是否需要包含哪些内容?

<击>的manifest.json

更新:我已将问题与以下代码隔离开来了。刷新页面或再次单击浏览器操作按钮时,执行会跳过 xhr.onreadystate = function(),因此永远不会到达 Main()。对于已经请求/接收的任何内容, xhr.onreadystate 不会改变。

更新2:执行使一个传递到Main()中的三个。所有变量都保留了第一次运行时的值,似乎搞砸了。如何在重新加载页面或单击浏览器图标后清除它们?

function GetData(request)
{
  var xhr = new XMLHttpRequest();
  
  xhr.onreadystatechange = function()
  {
    console.log(xhr.readyState + " : " + xhr.status)
    if (xhr.readyState == 4 && xhr.status == 200)
    {
      re_data = JSON.parse(xhr.responseText);
      Main();
    }
  }
  
  xhr.open("GET", request, true);
  xhr.send();
}

1 个答案:

答案 0 :(得分:0)

我想出了问题和解决方案。我忘了一旦后台脚本打开它在扩展的生命周期内保持打开状态。因此,变量不会重置。无论需要重置的变量都必须手动重置。至于重新加载页面,只重新加载网页,而不是需要手动重新启动的代码(发送到适当的函数)以响应按钮,链接或其他任何内容。