18

我正在编写一个 Chrome 扩展程序,并想编写一个 JS 文件,该文件提供了几个在另一个文件中不存在的预期功能,然后加载另一个文件。在传递当前模块的局部变量和全局变量时,我的行为类似于requirePerl、#includeC 或execfilePython 中的行为,就好像引用的文件被直接插入到当前脚本中一样。

我可以在那里找到的大多数现有解决方案都指在脚本标签中嵌入这些“包含”,但我不确定这是否适用(如果适用,请解释我的扩展在当前页面中注入所有这些脚本标签的确切位置)。

更新0

请注意,我正在编写内容脚本。至少在“用户”方面,我不提供原始 HTML 文档。

4

3 回答 3

23

最好的解决方案是特定于 Chrome 的。javascript 文件按照它们在扩展程序中加载的顺序列出,以下是相关字段manifest.json的摘录:

{
  "content_scripts": [
    {
      "js" : ["contentscript.js", "254195.user.js"]
    }
  ]
}

javascript 文件按照给定的顺序有效连接,然后执行。

于 2010-10-05T05:34:47.733 回答
-1
function load_script (url, cache) 
{ 

    var httpRequest = new ActiveXObject("Msxml2.XMLHTTP"); 
    httpRequest.open('GET', url, false); 

    if(!cache)
    {
        httpRequest.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
    }

    httpRequest.send(null);
    eval(httpRequest.responseText); 

    var s = httpRequest.responseText.split(/\n/); 
    var r = /^function\s*([a-z_]+)/i; 

    for (var i = 0; i < s.length; i++) 
    { 
        var m = r.exec(s[i]); 
        if (m != null) 
        {
            window[m[1]] = eval(m[1]); 
        }
    }
}

load_script("/script.js",true); 

我们在我们的组织中使用它来做到这一点。似乎工作得很好。

于 2010-09-28T14:22:04.443 回答
-2

你试过了吗 :

<script language="javascript" src="otherfile.js">

或(我不确定是哪个……但我记得其中一个在工作)

document.write('<script type="text/javascript" src="otherfile.js"></script>');
于 2010-09-28T14:22:12.560 回答