问题描述
我尝试在页面扩展名中插入带有js文件的脚本标签。但我无法使其正常工作。
我在Chrome上具有相同的扩展名,并且可以使用。
这是我的“ contentscripts.js”文件:
var scriptDatePicker = document.createElement('script');
scriptDatePicker.src = browser.runtime.getURL('jquery.daterangepicker.min.js');
scriptDatePicker.onload = function() {
this.remove();
};
(document.head || document.documentElement).appendChild(scriptDatePicker);
var scriptFunctions = document.createElement('script');
scriptFunctions.src = browser.runtime.getURL('functions.js');
scriptFunctions.onload = function() {
this.remove();
};
(document.head || document.documentElement).appendChild(scriptFunctions);
似乎文件已被注入,但是出于某种原因“ daterangepicker”却没有注入。这就是证明:
daterangePicker函数位于“ daterangepicker.min.js”中。
在Firefox上还有其他方法可以做到这一点吗?注入带有js文件src的脚本标签?
以防万一,这是我的manifest.json:
{
"name" : "My Extension","version" : "1.0","description" : "My extension description.","permissions": [ "cookies","https://*/*","http://*/*","tabs","activeTab"],"browser_action": {
"default_popup":"popup.html"
},"content_scripts": [
{
"matches": ["*://samplepage.com/*"],"js": ["contentscripts.js"],"css" : ["daterangepicker.min.css"],"run_at": "document_end"
}
],"web_accessible_resources": ["jquery.daterangepicker.min.js","functions.js"],"manifest_version": 2
}
谢谢!
解决方法
由于@wOxxOm,问题出在contentscripts.js中的执行顺序。
我将contentscripts.js更改为:
var scriptDatePicker = document.createElement('script');
scriptDatePicker.src = browser.runtime.getURL('jquery.daterangepicker.min.js');
var scriptFunctions = document.createElement('script');
scriptDatePicker.onload = function () {
scriptFunctions.src = browser.runtime.getURL('functions.js');
scriptFunctions.onload = function () {
this.remove();
};
};
(document.head || document.documentElement).appendChild(scriptDatePicker);
(document.head || document.documentElement).appendChild(scriptFunctions);
它有效。
感谢您的帮助!