登录 立即注册

首页 > 绿虎论坛 > 建站 > 讨论/求助 (发帖)

标题: 之前就有疑问的前端问题

作者: @Ta

时间: 2021-02-06

点击: 11620

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

img

https://cway.top


[隐藏样式|查看源码]


『回复列表(6|隐藏机器人聊天)』

1. ????
(/@Ta/2021-02-06 21:28//)

2.

这个和速度无关系,这一段代码的重点是为什么要把script字符串给拆成拼接的方式,原因是浏览器的HTML解析器看见</script>的时候会把这个误认,而解析器又无法分辨这是HTML标记还是JS代码。

你看的博客在乱说,不可信,即使真的有速度差异也是因为换了书写顺序/缓存等其它原因造成的。
红米K30 Pro 变焦版

(/@Ta/2021-02-06 21:36//)

3.

@hik,楼上的解释是正确的,你可以参考这篇文章 《Using In A JavaScript Literal》 https://wls.wwco.com/blog/2007/04/25/using-script-in-a-javascript-literal/
白日梦还是要做的

(/@Ta/2021-02-06 21:46//)

4.

你如果直接写:

<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>

白日梦还是要做的

(/@Ta/2021-02-06 21:56//)

5.

@Curtion,看来葫芦林每天都能学习新知识,@老虎会仰泳,你这样说也对,避免script标签混肴,之前我就想直接用script标签就行,干嘛还多此一举在外面包层document.write, 现在想应该是出于业务需要而进行判断加不加载这个js吧
https://cway.top

(/@Ta/2021-02-06 22:30//)

6.

@hik,我说的就是和@Curtion,是同一个意思,就是多写了点代码。
白日梦还是要做的

(/@Ta/2021-02-06 22:46//)

回复需要登录

11月3日 12:35 星期天

本站由hu60wap6华为CPU驱动

备案号: 京ICP备18041936号-1