javascript - Mempelajari pembangunan web, keraguan tentang skrip di kawasan kepala
漂亮男人
漂亮男人 2017-05-24 11:36:19
0
4
639

Jika anda tidak pandai belajar front-end sendiri, semak halaman utama syarikat dan terdapat kod berikut di bahagian kepala:

<head>
......
......
<script>
//疑惑1
var _hmt = _hmt || [];   
//疑惑2
(function() {     
        var hm = document.createElement("script");   
        hm.src = "https://hm.baidu.com/hm.js?788111edda8b56f4a6c2bdd403891d20";     //这个链接是百度的一些插件功能
        var s = document.getElementsByTagName("script")[0];   
        s.parentNode.insertBefore(hm, s); 
})();
</script>
</head>

Ragu 1: Algoritma litar pintas digunakan di sini, untuk apa ia digunakan kemudian? Adakah ini dilakukan secara amnya?
Ragu 2: Kod bermaksud menambahkan <skrip src='https://hm.baidu.com/hm.js?78...'> Tetapi mengapa melakukan ini? Saya mengujinya dan menambah kod ini terus ke kepala untuk mencapai fungsi yang sama. Jika terdapat berbilang halaman, bilangan aksara yang saya tambahkan pada setiap halaman kod ini akan menjadi kurang daripada bilangan aksara dalam fungsi tersebut. . Betul tak faham? ?
Sila minta pakar untuk menjelaskan keraguan saya, terima kasih!

漂亮男人
漂亮男人

membalas semua(4)
大家讲道理

Saya telah melaksanakan perpustakaan statistik yang serupa dan ingin berkongsi secara ringkas pemahaman peribadi saya tentang mekanisme ini.

<script>
// 这里如果已引入 _hmt 变量,则保留已有值
// 仅在未初始化成功的情况下将其初始化
// 避免后端模板拼接而成的页面中多处引入百度统计时,重复初始化变量的问题
var _hmt = _hmt || [];   
// 疑惑2
(function() {     
        var hm = document.createElement("script");   
        hm.src = "https://hm.baidu.com/hm.js?788111edda8b56f4a6c2bdd403891d20";
        var s = document.getElementsByTagName("script")[0];   
        s.parentNode.insertBefore(hm, s); 
})();
</script>

Soalan anda ialah, mengapa tidak menambah terus pautan dalam hm.src pada skrip teg skrip, tetapi mula-mula mulakan pembolehubah _hmt dan kemudian tambah skrip . Ini harus dikaitkan dengan pelaksanaan fungsi perpustakaan statistik. Pengenalan ringkas: hm.src 中的链接到 script 标签脚本中,而是先初始化 _hmt 变量后才添加该脚本。这应当是和统计库的功能实现有关的。简要介绍:

  1. _hmt 实质是是一个消息队列的缓存。插入该数组的内容均是各类点击、滑动、触摸等用户事件。推入这个消息队列中的事件会被统计库上报到百度统计。

  2. 这个缓存是支持在第一方业务代码中通过 JS API 来写入的。例如使用百度统计的开发者,可以在自己的 JS 代码中编写形如 _hmt.push(xxx)

  3. _hmt pada asasnya ialah cache baris gilir mesej. Kandungan yang dimasukkan ke dalam tatasusunan ini adalah semua jenis acara pengguna seperti klik, slaid, sentuhan, dsb. Peristiwa yang dimasukkan ke dalam baris gilir mesej ini akan dilaporkan kepada Baidu Statistics oleh pustaka statistik.
  4. Cache ini menyokong penulisan melalui JS API dalam kod perniagaan pihak pertama. Contohnya, pembangun yang menggunakan Baidu Statistics boleh menulis logik dalam bentuk _hmt.push(xxx) dalam kod JS mereka sendiri untuk menolak acara tersuai ke baris gilir mesej.
  5. Memandangkan skrip pihak ketiga juga boleh menulis pada baris gilir mesej, ini memerlukan pembolehubah tatasusunan baris gilir mestilah bukan sahaja global, tetapi juga mesti dimulakan seawal mungkin. Logik perniagaan seperti melaporkan kepada perpustakaan statistik boleh ditangguhkan sehingga kandungan utama halaman dimuatkan sebelum pelaksanaan.
#🎜🎜# #🎜🎜##🎜🎜#Untuk mencapai keperluan dalam 3, kaedah pengenalan skrip statistik direka bentuk sebagai [mula-mula memulakan tatasusunan, dan kemudian memuatkan skrip statistik secara dinamik]. Dengan cara ini, pemulaan sebaris terus dalam halaman semasa memuatkan tatasusunan baris gilir adalah sangat cekap, dan skrip statistik seterusnya ditangguhkan dalam pemuatan, mengurangkan kesan pada kelajuan pemuatan halaman. #🎜🎜##🎜🎜# #🎜🎜#
给我你的怀抱

Ragu 2: Ini sepatutnya statistik Baidu. . .

黄舟

Arahan

1 Tentukan sama ada pembolehubah _hmt telah ditakrifkan, atau takrifkan pembolehubah

2. Keutamaan operasi nod memuatkan sumber statik ini supaya tidak menjejaskan halaman pemaparan

Ujian

1. Anda boleh belajar sendiri baris pertama

2 Dalam baris kedua, anda boleh membandingkan dua kesan pemuatan.

Ty80

Ini adalah sekeping kod statistik Baidu,
As for why
"Saya membuat halaman berasingan dan hanya menambah kod JS ini. Kandungan halaman pop timbul ialah tetingkap perundingan. " #🎜🎜 #Kerana ia merentas domain
Apa itu merentas domain
Ia adalah satu cara untuk membawa barang orang lain ke rumah anda sendiri

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan