JS动态载入外部JS文件

    我们经常把一大堆的JS文件在页面载入的时候就全部载入,可这样就造成了页面载入速度慢,用到的时候才载入才是最好的。

    按需载入有许多种写法,比如document.writeln("<script src='js.js' tyep='text/jsvascript'">),但是这种写法只适合首次载入或者需要添加iframe,不是很好。

   将js做为一个DOM节点对象引入无疑是最好的选择,比如:

 

    var _script = document.createElement("script");

    _script .type = "text/javascript";

    _script .src = "js.js";

    document.getElementsByTagName("head")[0].appendChild(_script);

    以前我都是这么做的,如果没马上执行里面的方法的话,有足够的时间给IE载入和解析文件的话那么是不会出错(以前都没马上执行)。

    如果马上执行里面的方法的话,在FF下是不会出错,FF会先将文件载入并解析完毕后才执行,而IE却是同步的,它会在载入的同时就往下执行了,所以就会报错。

    解决方法,使用AJAX读取外部JS内容:

  

//外部引入SCRIPT,如果SRC已存在不加入,不存在加入
//参数: src -> JS的路径, evtFun -> 载入后需要执行的事件方法名
function appendScript(src, evtFun)
{
    //取得页面上所有的SCRIPT元素
    script = document.getElementsByTagName("script");
    //外部引入SCRIPT,如果SRC已存在不加入,不存在加入
    for (var i = 0; i < script.length; i++)
    {
        if (script[i].getAttribute("id") == src)
        {
            if (evtFun)
            {
                evtFun();
            }
            return;
        }
    }
   
    //外部引入JS通过AJAX取回
    function getScript(result)
    {
        var jsCode = result.responseText;
        var _script = document.createElement("script");
        _script.setAttribute("language", "javascript");
        _script.setAttribute("type", "text/javascript");
        _script.setAttribute("text", jsCode);
        _script.setAttribute("id", src);
        document.getElementsByTagName("head")[0].appendChild(_script);
        if (evtFun)
        {
            evtFun();
        }
    }
   
    //AJAX读取引入的JS内容
    AjaxPost(src, null, getScript});
}

//调用方法

function do()
{
    function show()
    {
        abc();         //abc为js.js内的一个方法
    }
   
    appendScript("js.js", show);            //参数:地址,事件
}

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,你可以按照以下步骤来完成这个问题: 1. 首先,在你的项目目录下建立一个名为 data.json 的文件,用于存储留言数据。在该文件中,你可以按照以下格式添加三条记录: ``` [ { "昵称": "张三", "留言": "你好,这是我的第一条留言。", "留言时间": "2021-01-01 10:00:00" }, { "昵称": "李四", "留言": "你好,这是我的第二条留言。", "留言时间": "2021-01-02 11:00:00" }, { "昵称": "王五", "留言": "你好,这是我的第三条留言。", "留言时间": "2021-01-03 12:00:00" } ] ``` 2. 接下来,在你的网页中使用 `<iframe>` 标签来载入 data.json 文件。你可以按照以下格式添加该标签: ``` <iframe id="message-iframe" src="data.json"></iframe> ``` 3. 最后,在你的网页中使用 JavaScript 代码来读取 data.json 文件中的数据,并输出到页面中。你可以按照以下步骤来完成这个任务: - 首先,获取 `<iframe>` 标签的引用: ```js const iframe = document.querySelector('#message-iframe'); ``` - 然后,等待 iframe 加载完成,并获取其内容: ```js iframe.onload = function() { const content = iframe.contentDocument.body.innerText; const messages = JSON.parse(content); console.log(messages); // 显示留言数据 }; ``` - 最后,将留言数据输出到页面中。你可以使用 JavaScript 动态创建 HTML 元素来实现这个功能: ```js const messageList = document.querySelector('#message-list'); messages.forEach((message) => { const item = document.createElement('li'); item.innerHTML = `${message.昵称} 在 ${message.留言时间} 留言:<br>${message.留言}`; messageList.appendChild(item); }); ``` 这样,你就完成了这个问题的要求。注意,在实际应用中,你可能需要对数据进行更多的处理和展示,这里只是一个简单的示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值