【问题标题】:Extension background script doesn't load unless resaved除非重新保存,否则扩展后台脚本不会加载
【发布时间】:2016-10-02 06:20:19
【问题描述】:

对于 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();
}

【问题讨论】:

  • 不,manifest.json 中的内容不应导致您所描述的内容。我们将需要一个 complete minimal reproducible example 来了解发生了什么(即包括您的 background.jsmodify_page.js 文件,或者至少有足够多的人重复这个问题。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-10
    • 2017-02-16
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多