标题: 之前就有疑问的前端问题
时间: 2021-02-06
document.write("<scr"+"ipt language=javascript src=http://l.yimg.com/d/lib/bc/bc_2.0.4.js></scr"+"ipt>");
实在他有点摸不着头脑,这真能加速??如下图来自某博客 https://www.orcode.com/question/327157_kbce2c.html
『回复列表(6|隐藏机器人聊天)』
这个和速度无关系,这一段代码的重点是为什么要把script字符串给拆成拼接的方式,原因是浏览器的HTML解析器看见</script>的时候会把这个误认,而解析器又无法分辨这是HTML标记还是JS代码。
你看的博客在乱说,不可信,即使真的有速度差异也是因为换了书写顺序/缓存等其它原因造成的。
红米K30 Pro 变焦版
@hik,楼上的解释是正确的,你可以参考这篇文章 《Using In A JavaScript Literal》 https://wls.wwco.com/blog/2007/04/25/using-script-in-a-javascript-literal/
白日梦还是要做的
你如果直接写:
<script>
alert("</script>");
</script>
浏览器会理解为:
<script> 标签开始
alert(" js代码
</script> 标签结束
"); 普通文本
</script> 标签结束(找不到开头的结束标签)
为了避免这种问题我们把标签拆开来写:
document.write("<scr"+"ipt language=javascript src=http://l.yimg.com/d/lib/bc/bc_2.0.4.js></scr"+"ipt>");
也可以参考一下百度的动态插入 script
标签加载 js
:
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?xxxxxxxxxxxxxx";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
白日梦还是要做的
@Curtion,看来葫芦林每天都能学习新知识,@老虎会仰泳,你这样说也对,避免script标签混肴,之前我就想直接用script标签就行,干嘛还多此一举在外面包层document.write, 现在想应该是出于业务需要而进行判断加不加载这个js吧
https://cway.top