我正在使用浏览器扩展/插件 . 我们在Chrome中使用它,所以我试图让它在Firefox中运行 .
我已经在Firefox Developer Edition 49.0a2(2016-07-25)中加载了我的加载项 .
我的扩展涉及将content_script设置为 run_at: document_start ,因此它可以在其他页面脚本运行之前注入脚本标记,因此它可以使对象全局可用于网站 .
这似乎在Chrome中运行良好,但在Firefox中,它已被证明有点竞争条件,其他页面资源大部分时间都在加载 .
是否有一种策略来加载内容脚本,以便在任何其他页面脚本运行之前注入并加载脚本?
当我添加日志时,我可以很好地隔离发生的事情 . 在此示例内容脚本中:
// inject in-page script
console.log('STEP 1, this always happens first')
var scriptTag = document.createElement('script')
scriptTag.src = chrome.extension.getURL('scripts/inpage.js')
scriptTag.onload = function () { this.parentNode.removeChild(this) }
var container = document.head || document.documentElement
// append as first child
container.insertBefore(scriptTag, container.children[0])
现在如果文件 scripts/inpage.js 只是运行一个日志,就像
console.log('STEP 2, this should always run second')
我用这样的脚本访问一个页面:
console.log('Step 3, the page itself, should run last')
实际上,步骤2和步骤3以非确定性顺序运行 .
非常感谢!