Maison > Questions et réponses > le corps du texte
Si vous n'êtes pas doué pour apprendre le front-end par vous-même, consultez la page d'accueil de l'entreprise et il y a le code suivant dans la zone d'en-tête :
<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>
Doute 1 : L'algorithme de court-circuit est utilisé ici, à quoi sert-il plus tard ? Est-ce généralement fait ?
Doute 2 : Le code signifie ajouter dynamiquement l'instruction <script src='https://hm.baidu.com/hm.js?78...'> Mais pourquoi faire ça ? Je l'ai testé et ajouté ce code directement dans la tête pour obtenir la même fonction. S'il y a plusieurs pages, le nombre de caractères que j'ajoute à chaque page de ce code sera inférieur au nombre de caractères de la fonction. . Vous ne comprenez vraiment pas ? ?
Veuillez demander à un expert de clarifier mes doutes, merci !
大家讲道理2017-05-24 11:38:19
J'ai implémenté une bibliothèque statistique similaire et j'aimerais partager brièvement ma compréhension personnelle de ce mécanisme.
<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>
Votre question est la suivante : pourquoi ne pas ajouter directement le lien dans hm.src
au script de balise de script, mais initialiser d'abord la variable _hmt
, puis ajouter le script. Cela devrait être lié à la mise en œuvre des fonctions de la bibliothèque statistique. Brève introduction : hm.src
中的链接到 script 标签脚本中,而是先初始化 _hmt
变量后才添加该脚本。这应当是和统计库的功能实现有关的。简要介绍:
_hmt
实质是是一个消息队列的缓存。插入该数组的内容均是各类点击、滑动、触摸等用户事件。推入这个消息队列中的事件会被统计库上报到百度统计。
这个缓存是支持在第一方业务代码中通过 JS API 来写入的。例如使用百度统计的开发者,可以在自己的 JS 代码中编写形如 _hmt.push(xxx)
_hmt
est essentiellement un cache de file d'attente de messages. Le contenu inséré dans ce tableau est tous types d'événements utilisateur tels que des clics, des diapositives, des touches, etc. Les événements placés dans cette file d'attente de messages seront signalés à Baidu Statistics par la bibliothèque de statistiques.
_hmt.push(xxx)
dans leur propre code JS pour envoyer des événements personnalisés vers la file d'attente de messages.
黄舟2017-05-24 11:38:19
1. Déterminez si la variable _hmt a été définie, ou définissez la variable
2. Chargement dynamique. La priorité du fonctionnement du nœud chargeant les ressources statiques < Ceci afin de ne pas affecter la page de rendu
.1. Vous pouvez étudier la première ligne par vous-même
2. Dans la deuxième ligne, vous pouvez comparer les deux effets de chargement.
PHP中文网2017-05-24 11:38:19
Il s'agit d'un morceau de code des statistiques de Baidu.
Quant à savoir pourquoi
"J'ai créé une page séparée et j'ai seulement ajouté ce code JS. Le contenu de la page qui apparaît est celui de la fenêtre de consultation."
Parce que c'est le cas. cross-domain
Quant à ce qu’est le cross-domain
C’est un moyen d’emporter les affaires des autres chez soi