为什么使用 document.write 需要将</script>拆分开
福州SEO:细心点的朋友可能会注意到,有些网站使用document.write动态加载JS的时候需要把</script>拆分开来写?如下面的例子所示:
<script type='text/javascript'>
if (typeof window['jQuery'] == 'undefined') document.write('<scr'+'ipt type="text/javascript" src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></sc'+'ript>');
</script>
为此,我们可以做一个实验,打开记事本填入下面的内容,另存为html格式,使用浏览器打开看看:
<html>
<body>
<script type="text/javascript">
document.write('<script type="text/javascript">alert(1024);</script>');
alert(2048)
</script>
</body>
</html>
最后你会发现结果是这样的:
'); alert(2048)
因此,我们可以猜出原因可能是,</script> 如果不拆开,会导致过早结束script块,导致后面的JS都被解析成了普通的文本。
扩展一下,提供另外一种方法在纯JS中动态加载脚本:
if (typeof(jQuery) == 'undefined') {
(function() {
var sct = document.createElement('script');
sct.src = ('https:' == document.location.protocol ? 'https' : 'http') +
'://cdn.bootcss.com/jquery/3.4.1/jquery.js';
sct.type = 'text/javascript';
var myjs = document.getElementsByTagName('script')[0];
myjs.parentNode.insertBefore(sct, myjs);
})();
}
为什么使用 document.write 需要将</script>拆分开的更多相关文章
- <script>document.write(location.href)</script>
<script>document.write(location.href)</script> 什么意思?
- 当document.write 遇到外联script
先来看个例子: <!DOCTYPE html> <html> <head> <title>测试 document.write</title> ...
- 去掉你代码里的 document.write("<script...
在传统的浏览器中,同步的 script 标签是会阻塞 HTML 解析器的,无论是内联的还是外链的,比如: <script src="a.js"></script& ...
- java script第一篇(按钮全选的实现)
今天刚学了java script,记录下学习新知识的点滴.以下是操作步骤.鉴于我是初级者,如有错误,恳请读者指正.万分谢谢. 1.新建一个文档(用NotePad软件,为了使得在浏览器中打开不是乱码,在 ...
- 深入理解DOM节点类型第七篇——文档节点DOCUMENT
× 目录 [1]特征 [2]快捷访问 [3]文档写入 前面的话 文档节点document,隶属于表示浏览器的window对象,它表示网页页面,又被称为根节点.本文将详细介绍文档节点document的内 ...
- 闲扯 『 document.write 』
初春的晚上,闲来无事,聊聊 document.write 方法. document.write 使用方式非常简单,把 "字符串化"(不好意思,这可能是我自己创造的名词)的 html ...
- 当target属性在XHTML script中无效时
<a href="#" target=_blank></a>target此属性能够使链接在新窗口打开,但是在XHTML script中无效时. 那么解决方案 ...
- Java Script
一.JavaScript简介 1.JavaScript是个什么东西? 它是个脚本语言,需要有宿主文件,它的宿主文件是HTML文件. 2.它与Java什么关系? 没有什么直接的联系,Java是Sun公司 ...
- HTML DOM 实例-Document 对象
使用 document.write() 向输出流写文本 <html><body><script type="text/javascript">d ...
随机推荐
- jetty启动项目后js修改后无法保存
在web.xml中加入如下配置即可: <servlet> <servlet-name>default</servlet-name> <servlet-clas ...
- GRADLE依赖的统一管理
参考链接:http://stormzhang.com/android/2016/03/13/gradle-config/ 我想大部分人应该都在使用Gradle来依赖管理,还没有使用的去面壁思过,Gra ...
- ansible shell 之运行后台程序
最近在使用ansible shell模块启动一个shell编写的脚本,该脚本主要功能式加载java的classpath并在后台运行这个java程序. 该脚本在linux shell中可以正常启动和停止 ...
- 51nod 1305:Pairwise Sum and Divide
1305 Pairwise Sum and Divide 题目来源: HackerRank 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 有这样一段 ...
- golang实现单链表
package main import "fmt" type Object interface{} type Node struct { data Object next *Nod ...
- codeforces 596 C. p-binary
题意:给你一个n和一个p,让你用 (2k+p)进制来表示n,找出用最少的(2k+p)来表示n. 分析:首先我们看到2k,首先下想到二进制,我们可以我们列出式子,也就是 (2x1 + p)+(2x2 + ...
- 腾讯大佬告诉你,写Python到底用什么IDE合适
不管你是 Python 新手还是老鸟,肯定纠结过一个问题: 到底用什么编辑器写 Python 代码好? 为此,我们调查了数十位鹅厂程序猿们爱用的 Python IDE,从他们对每款编辑器的看法中,也许 ...
- POJ 2528 Mayor‘s poster 线段树+离散化
给一块最大为10^8单位宽的墙面,贴poster,每个poster都会给出数据 a,b,表示该poster将从第a单位占据到b单位,新贴的poster会覆盖旧的,最多有10^4张poster,求最后贴 ...
- 简单的Vue计算属性
倒转字符串 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- 吴裕雄--天生自然 PHP开发学习:While 循环
<html> <body> <?php $i=1; while($i<=5) { echo "The number is " . $i . &q ...