Firefox插件需要额外刷新才能工作

Firefox插件需要额外刷新才能工作,firefox,firefox-addon,add-on,Firefox,Firefox Addon,Add On,我已经开始开发一个插件,它可以处理Github repo的package.json。加载加载项时,需要额外的页面刷新才能使加载项生效,而不是在识别url后立即应用边框 manifest.json { "manifest_version": 2, "name": "Border It", "version": "0.0.1", "permissions": ["activeTab", "tabs", "https://github.com/*"], "content_scrip

我已经开始开发一个插件,它可以处理Github repo的
package.json
。加载加载项时,需要额外的页面刷新才能使加载项生效,而不是在识别url后立即应用边框

manifest.json

{
  "manifest_version": 2,
  "name": "Border It",
  "version": "0.0.1",
  "permissions": ["activeTab", "tabs", "https://github.com/*"],
  "content_scripts": [
    {
      "matches": ["https://github.com/*/package.json"],
      "js": ["src/scripts/borderify.js"],
    }
  ]
}
borderify.js

document.body.style.border = '5px solid red';

我做错了什么?

GitHub动态更新页面内容,因此您需要在每个GitHub页面上运行脚本(
“匹配项”):https://github.com/*“]
)并观察位置变化。以下是更多提示:

(更新) 基于
MutationObserver
的示例实现:

{
  "manifest_version": 2,
  "name": "Border It",
  "version": "0.0.1",
  "permissions": [
    "activeTab",
    "tabs",
    "https://github.com/*"
  ],
  "content_scripts": [
    {
      "matches": ["https://github.com/*"],
      "js": ["borderify.js"]
    }
  ]
}
函数onLocationChanged(){
if(/\/package.json([?\]\$)/.test(location.pathname))
document.body.style.border='5px纯红';
其他的
document.body.style.border='';
}
onLocationChanged();//最初加载页面时执行
让lastUrl;
常量观察者=新的突变观察者(突变=>{
//对页面中的任何动态更改执行
如果(location.href==lastUrl)
返回;
lastUrl=location.href;
onLocationChanged();
});
常量配置={
儿童名单:是的,
子树:真
};
observer.observe(document.body,config);

您的问题还不清楚。这听起来像是说,为了注入内容脚本,必须在安装加载项后加载页面。这是正常的。内容脚本仅在加载页面时加载。如果安装新的加载项,则内容脚本不会加载到现有页面中,除非您专门编写了代码(例如,您在后台脚本中编写的代码手动将内容脚本加载到现有的匹配选项卡中)。但是,您可能会说在安装加载项后需要刷新两次,这是不可能的。@Makyen这就是发生的情况。1.我加载加载项并转到github repo 2的package.json。插件应该显示一个边框,而不是3。我按refresh并显示边框所有权限都已授予,这是在我的后台脚本``const logHstoryStateDetails=(details)=>{console.log(details);};browser.webNavigation.onHistoryStateUpdated.addListener(logHstoryStateDetails);`但是我遇到了一个错误
跨源请求被阻止:同源策略不允许在'https://collector.githubapp.com/collect’. (原因:如果CORS标题“Access Control Allow Origin”为“*”,则不支持凭据。)
我该怎么办?我添加了一个基于
MutationObserver
的示例实现。它不应该导致任何跨源请求错误。