将本地JavaScript文件添加到页面?

时间:2012-06-09 19:26:56

标签: javascript jquery html ajax userscripts

我知道使用document.createElement('script')添加脚本的过程,但是对于本地文件它是否相同?我尝试过使用一些function.toString()调用,但效率非常低,宁可存储我需要单独添加的文件,有一个加载程序,并且每天调用它。有任何想法吗?这是用户脚本的全部内容,我希望能够完美地转换为扩展。感谢。

1 个答案:

答案 0 :(得分:1)

<script> src设置为本地文件有效。 EG:

addJS_Node (null, 'file:///D:/SAMPLE_DIR/YOUR_CODE.js');

function addJS_Node (text, s_URL, funcToRun) {
    var D                                   = document;
    var scriptNode                          = D.createElement ('script');
    scriptNode.type                         = "text/javascript";
    if (text)       scriptNode.textContent  = text;
    if (s_URL)      scriptNode.src          = s_URL;
    if (funcToRun)  scriptNode.textContent  = '(' + funcToRun.toString() + ')()';

    var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
    //--- Don't error check here. if DOM not available, should throw error.
    targ.appendChild (scriptNode);
}

重要说明:您几乎总是必须指定完整路径,因为您希望文件从本地文件系统加载。浏览器会将相对路径解释为相对于当前网页(或<base>标记值)。





回复:

  

这是用户脚本的全部内容我希望能够完美地转换为扩展名

对于扩展,最好不要将JS注入目标页面,而是将其保留在“孤立的世界”范围内。

对于扩展程序或sometimes even just dedicated Chrome userscripts,可以使用manifest轻松地将文件包含到该范围内。 EG(来自here):

{
    "name": "My extension",
    ... 
    "content_scripts": [
        {
            "matches":  ["http://www.google.com/*"],
            "css":      ["mystyles.css"],
            "js":       ["jquery.js", "myscript.js"]
        }
    ],
    ... 
}