导入带有js文件的脚本标签以将其作为firefox扩展名

问题描述

我尝试在页面扩展名中插入带有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”却没有注入。这就是证明:

enter image description here

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);

它有效。

感谢您的帮助!

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...