JavaScript中的浏览器异步加载的分析
本篇文章给大家带来的内容是关于JavaScript中的浏览器异步加载的分析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
当我们刚学js的时候,应该就知道js是单线程,进行的是同步加载,会阻断 html 和 css 的加载线(因为js能够修改 html 和 css)
js同步加载的缺点:加载工具方法没必要阻塞文档,过得js加载会影响页面效率,一旦网速不好,那么 整个网站将等待js加载而不进行后续的渲染等工作。
js里面有些工具方法需要按需加载,用到加载,不用不加载???这时候就需要我们异步加载js。
JavaScript异步加载的三种方案。
1、defer异步加载,但要等到dom文档全部解析完才会被执行。只有IE能用,也可以将代码全部写到内部
<script type = "text/javascript" src = "tools.js" defer = "defer"></script>
<script defer = "defer"> console.log("a"); </script>
2、async 异步加载,加载完就执行,async只能加载外部脚本,不能把js写在script标签里
<script type = "text/javascript" aysnc = "aysnc"></script>
以上两种方法执行时也不阻塞页面
为了解决浏览器兼容问题??如果1,2,两种方法同时加载,会导致代码重叠覆盖执行顺序的冲突,所以引入第三种方法 通用的方法
3、创建script,插入到DOM中,加载完毕后callBack,
var script = document.createElement('script'); script.type = "text/javescript"; script.src = "demo.js"; // 此时就会加载src地址里面的东西 // 此时会有一个灯塔模式,灯塔模式会产生一个img属性,用来存放地址的加载 document.head.appendChild(script); //----此时就会在页面上展示js里面的内容
当我们在外部js文件里面写一个test函数
var script = document.createElement('script'); script.type = "text/javascript"; script.src = "demo.js"; test(); document.head.appendChild(script);
这里外部demo.js文件就不展示了,里面有一个test函数。结果如下:
test函数执行的时候因为加载需要时间,当test执行时,还没加载完。所以会显示test未定义。我们改如何解决这个问题呢?
首先我们就会想到onload事件。
script.onload : 兼容性特别好,Safari chrome firefox opera都兼容 ;
script.onload = function(){ test(); }
但是呢 IE 就script没有onload事件,IE人家有自己的方法:script.readyState。
script.readyState : IE 的script上面有个状态码(readyState),通过状态码的校验来判断是否加载完毕。在IE里script标签有个readyStatechange事件,这个事件监听的是,当script.readyState值变化的时候触发事件。
(script.readyState == "complete" || script.readyState =="loaded" 表示解析完毕。)
script.onreadystatechange = function(){ if(script.readyState == "complete" || script.readyState == "loaded"){ callback(); //回调函数:当满足一定条件才可以被执行 } }
最后我们封装函数,实现我们按需加载的功能。
function loadScript(url,callback){ var script = document.createElement('script'); script.type = "text/javascript"; if(script.readyState){ script.onreadyStatechange = function(){ if (script.readyState == "loaded" || script.readyState == "complete") { obj[callback](); } } }else{ script.onload = function(){ obj[callback](); } } script.src = url; document.head.appendChild(script); } loadScript('demo.js','test');
相关文章推荐:
Atas ialah kandungan terperinci JavaScript中的浏览器异步加载的分析. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tajuk: Kaedah dan contoh kod untuk menyelesaikan jQuery.val() tidak berfungsi Dalam pembangunan bahagian hadapan, jQuery sering digunakan untuk mengendalikan elemen halaman. Antaranya, mendapatkan atau menetapkan nilai elemen bentuk adalah salah satu operasi biasa. Biasanya, kami menggunakan kaedah .val() jQuery untuk beroperasi pada nilai elemen bentuk. Walau bagaimanapun, kadangkala anda menghadapi situasi di mana jQuery.val() tidak berfungsi, yang mungkin menyebabkan beberapa masalah. Artikel ini akan memperkenalkan cara menangani jQuery.val(

Perwakilan ialah jenis rujukan selamat jenis yang digunakan untuk menghantar penunjuk kaedah antara objek untuk menyelesaikan masalah pengaturcaraan tak segerak dan pengendalian acara: Pengaturcaraan tak segerak: Perwakilan membenarkan kaedah dilaksanakan dalam urutan atau proses yang berbeza, meningkatkan responsif aplikasi. Pengendalian acara: Perwakilan memudahkan pengendalian acara, membenarkan acara seperti klik atau pergerakan tetikus dibuat dan dikendalikan.

Walaupun HTML sendiri tidak boleh membaca fail, pembacaan fail boleh dicapai melalui kaedah berikut: menggunakan JavaScript (XMLHttpRequest, fetch()); menggunakan bahasa sebelah pelayan (PHP, Node.js menggunakan perpustakaan pihak ketiga (jQuery. get() , axios, fs-extra).

Perkara yang mesti dimiliki oleh pembangun bahagian hadapan: kuasai mod pengoptimuman ini dan buat tapak web anda terbang! Dengan perkembangan pesat Internet, laman web telah menjadi salah satu saluran penting untuk promosi dan komunikasi korporat. Tapak web yang berprestasi baik, memuatkan pantas bukan sahaja meningkatkan pengalaman pengguna, tetapi juga menarik lebih ramai pelawat. Sebagai pembangun bahagian hadapan, adalah penting untuk menguasai beberapa corak pengoptimuman. Artikel ini akan memperkenalkan beberapa teknik pengoptimuman bahagian hadapan yang biasa digunakan untuk membantu pembangun mengoptimumkan tapak web mereka dengan lebih baik. Fail termampat Dalam pembangunan laman web, jenis fail yang biasa digunakan termasuk HTML, CSS dan J

Untuk memasukkan fail JS luaran dalam HTML, gunakan teg <script> dan tentukan URL fail untuk dimuatkan. Anda juga boleh menentukan jenis, tangguh atau atribut tak segerak untuk mengawal cara pemuatan dan pelaksanaan berlaku. Lazimnya, teg <script> hendaklah diletakkan di bahagian bawah bahagian <body> untuk mengelak daripada menyekat pemaparan halaman.

Bagaimana untuk mengelakkan pengalihan halaman dalam WordPress? Dalam pembangunan laman web, kadangkala kami ingin melaksanakan tetapan bukan lompat halaman dalam WordPress, iaitu semasa operasi tertentu, kandungan halaman boleh dikemas kini tanpa menyegarkan keseluruhan halaman. Ini meningkatkan pengalaman pengguna dan menjadikan tapak web lebih lancar. Seterusnya, kami akan berkongsi cara melaksanakan tetapan bukan lompat halaman dalam WordPress dan memberikan contoh kod khusus. Pertama, kita boleh menggunakan Ajax untuk menghalang halaman daripada melompat. Ajax

Fungsi carian PHP sentiasa menjadi bahagian yang sangat penting dalam pembangunan laman web, kerana pengguna sering menggunakan kotak carian untuk mencari maklumat yang mereka perlukan. Walau bagaimanapun, banyak laman web mempunyai masalah seperti kecekapan rendah dan hasil carian yang tidak tepat semasa melaksanakan fungsi carian. Untuk membantu anda mengoptimumkan fungsi carian PHP, artikel ini akan berkongsi beberapa petua dan memberikan contoh kod khusus. 1. Gunakan enjin carian teks penuh, pangkalan data SQL tradisional adalah kurang cekap apabila memproses kandungan teks dalam jumlah yang besar. Oleh itu, adalah disyorkan untuk menggunakan enjin carian teks penuh, seperti Elasticsearch, Solr, dsb.

Rahsia pengoptimuman prestasi laman web: kuasai kaedah ini untuk membuat laman web anda terbang! Dengan perkembangan pesat Internet, laman web telah menjadi saluran penting untuk promosi korporat, paparan produk, dan komunikasi dan interaksi. Walau bagaimanapun, apabila pengguna melawati tapak web, jika kelajuan memuatkan terlalu perlahan dan masa tindak balas terlalu lama, pengalaman pengguna akan berkurangan dengan banyak, malah ia boleh menyebabkan pengguna keluar secara langsung. Oleh itu, pengoptimuman prestasi laman web menjadi semakin penting. Jadi, apakah itu pengoptimuman prestasi laman web? Ringkasnya, pengoptimuman prestasi laman web adalah untuk meningkatkan kelajuan pemuatan laman web melalui satu siri kaedah dan cara teknikal.
