javascript-异步加载js的问题,为什么能异步加载

问题描述

异步加载js的问题,为什么能异步加载

这是高性能js的一个例子,为什么没有设置async属性为true就能实现异步下载?

 var script = document.createElement ("script");
script.type = "text/javascript";
script.src = "file1.js";
document.getElementsByTagName_r("head")[0].appendChild(script);

解决方案

这是script标签,不是ajax,它的异步和同步不是相对于代码执行,而是对于文档解析来说。
加载file1.js是否完成,最终都是通过回调的方式通知。
另外async这是html5的特性,以前版本是没有的

解决方案二:

以下是一个监听页面加载script的例子。页面通过load或者onreadystate这个方法来监听script是否加载完成,可以体会 一下这个方法。
    _load: function (path, callback) {
        try {
            var script = document.createElement('script');

            script.src = path;
            script.type = "text/javascript";

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

            if (script.addEventListener) {
                script.addEventListener("load", callback, false);
            } else if (script.attachEvent) {
                script.attachEvent("onreadystatechange", function () {
                    if (script.readyState == 4 || script.readyState == 'complete' || script.readyState == 'loaded') {
                        callback();

                    }
                });
            }
        } catch (e) {
            console.log(e);
        }
    }
时间: 2024-12-23 15:09:09

javascript-异步加载js的问题,为什么能异步加载的相关文章

JS 动态加载js文件和css文件 同步/异步的两种简单方式_javascript技巧

/*动态添加js或css,URL:文件路径,FileType:文件类型(js/css)*/ function AddJsFiles(URL,FileType){ var oHead = document.getElementsByTagName('HEAD').item(0); var addheadfile; if(FileType=="js"){ addheadfile= document.createElement("script"); addheadfile

Javascript vue.js表格分页,ajax异步加载数据_基础知识

分页一般和表格一起用,分页链接作为表格的一部分,将分页链接封装成一个独立的组件,然后作为子组件嵌入到表格组件中,这样比较合理. 效果: 代码: 1.注册一个组件 js Vue.component('pagination',{ template:'#paginationTpl', replace:true, props:['cur','all','pageNum'], methods:{ //页码点击事件 btnClick: function(index){ if(index != this.cu

异步动态加载JS并运行

 这篇文章主要是对异步动态加载JS并运行的示例代码进行了介绍.需要的朋友可以过来参考下,希望对大家有所帮助 如下所示:    代码如下: (function(){ var ga=document.createElement('script');ga.type?=?'text/javascript';?ga.async?=?true; ga.src?=?('https:'?==?document.location.protocol???'https://ssl'?:?'http://www')?+

利用jQuery的deferred对象实现异步按顺序加载JS文件_jquery

前段时间看了阮一峰的jQuery的deferred对象详解一文,对jQuery中的deferred的用法了一些了解,今天看到园子里的一篇文章:关于重构JS前端框架的失败经验(顺便怀念那些死去的代码),于是把我之前写的一个利用jQuery的deferred异步按顺序加载JS文件方案分享出来,欢迎指正. 如果你现在对jQuery中的deferred还不了解,强烈建议你看一下阮一峰的jQuery的deferred对象详解一文. 加载JS文件的代码如下: 复制代码 代码如下: /* Loading Ja

javascript include/import 动态加载js/css文件方法总结

第一种:一般用在外部CSS文件中加载必须的文件  程序代码  代码如下 复制代码 @import url(style.css); /*只能用在CSS文件中或者style标签中*/ 第二种:简单的在页面中加载一个外部CSS文件  程序代码  代码如下 复制代码 document.createStyleSheet(cssFile); 第三种:用createElement方法创建CSS的Link标签  程序代码  代码如下 复制代码 var head = document.getElementsByT

javascript动态加载JS文件(支持各种浏览器)

1.直接document.write  代码如下 复制代码 <script language="javascript">     document.write("<script src='test.js'></script>"); </script> 2.动态改变已有script的src属性  代码如下 复制代码 <script src='' id="s1"></script>

异步加载js文件的方法总结

方法一,jQuery.getScript HTML 代码:  代码如下 复制代码 <button id="go">Run</button> <div class="block"></div> jQuery 代码: jQuery.getScript("http://dev.jquery.com/view/trunk/plugins/color/jquery.color.js",  function()

javascript中动态加载js文件多种解决办法

一个比较全部在动态加方法  代码如下 复制代码 /*     动态加载js v1.0 by:dum 2012-03-17 www.111cn.net     用法:src="webJsBase.js?load=a,b"     注:加载本目录下js */ var webJsBase = {     require: function(libraryName) {         document.write('<script type="text/javascript&

JavaScript动态加载js文件

/********************************************************************* * JavaScript动态加载js文件 * 说明: * 之前没有使用require来动态加载js文件,自己模仿实现了一个,参考文档2中 * 有jQuery的方法,以及等效原型. * * 2017-8-28 深圳 龙华樟坑村 曾剑锋 **************************************************************