在Chrome扩展程序内容脚本中包含Javascript文件

时间:2010-09-28 14:18:18

标签: javascript google-chrome-extension include content-script

我正在编写Chrome扩展程序,并希望编写一个JS文件,该文件提供了另一个不存在的预期函数,然后加载其他文件。我的行为类似于Perl中的require,C中的#include或者当传递当前模块本地和全局时Python中的execfile,就好像引用的文件直接插入到当前的脚本。

我能找到的大多数现有解决方案都提到嵌入这些“包含”内部脚本标记,但我不确定这是否适用(如果确实如此,请解释我的扩展名在哪里注入所有这些脚本标记当前页面。)

Update0

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

3 个答案:

答案 0 :(得分:18)

最好的解决方案是针对Chrome的。 javascript文件按照扩展程序manifest.json中加载的顺序列出,这里是relevant field的摘录:

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

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

答案 1 :(得分:-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); 

我们在组织中使用此功能来执行此操作。似乎运作良好。

答案 2 :(得分:-1)

你有没有尝试过:

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

或(我不知道哪个......但我记得其中一个正在工作)

document.write('<script type="text/javascript" src="otherfile.js"></script>');