先来看一下下面的一段代码有什么问题?
<html>
<head>
<script src="./jquery.min.js"></script>
</head>
<body>
<div id="test"></div>
<script>
var str = '<script src="./test.js"></script>';
$("#test").append(str);
</script>
</body>
</html>
在谷歌(v53)和ff(v48)中都在var str ....这一句报错了。
为毛?因为<script>和str定义中包住的script匹配了,没想到你是这样的匹配。
再深入下去就是浏览器内核的解释问题了。所以暂时打住。
如果把这个script放到其他js文件中引用则不会有问题(这不废话吗)。。。
或者做一下转义:
var str = '<script src="./test.js"></script>';
顺带一提的就是,上面这种动态插入的js在chrome的console的source中是看不到的,例如我上面插入的test.js(是我打开方式不对?)
要测试上述代码需放在在服务器下,随便弄个python,node也是分分钟起服务的啦。
为什么要放服务器下?因为动态插入的xml其实是用ajax请求回来的,所以看到有些js请求奇奇怪的,
例如test.js?_=1474977450655,后面带一串时间戳,九成(成数明显是吹的,你也当真啊?)可以认为它是ajax请求回来的。
此处必须加一个:完。