【问题标题】:Add Local JavaScript File to Page?将本地 JavaScript 文件添加到页面?
【发布时间】:2012-06-09 19:26:56
【问题描述】:

我知道使用document.createElement('script') 添加脚本的过程,但是对于本地文件是否相同?我已经尝试使用几个function.toString() 调用,但这非常低效,我宁愿存储我需要单独添加的文件,有一个加载器,然后就可以了。有任何想法吗?这都是为了一个我希望完美地转换成扩展的用户脚本。谢谢。

【问题讨论】:

    标签: javascript jquery html ajax userscripts


    【解决方案1】:

    将<script> src 设置为本地文件有效。例如:

    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"]
            }
        ],
        ... 
    }
    

    【讨论】:

    • 糟糕!对于那个很抱歉。在这种情况下,您不能通过相对路径包含本地文件。您需要完整的file:///D:/ ... URL。 ... ...清单内容在您编写扩展程序之前不适用,或者除非您设置 Chrome 用户脚本,如 in this answer 所示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    相关资源
    最近更新 更多