我正在编写一个脚本来检测jQuery,如果它不存在则插入谷歌CDN版本和本地回退(不要问为什么......这不是我的想法),问题是当我尝试做document.write我得到一个奇怪的输出
document.write("<script>window.jQuery || document.write('<script src=\"js/jquery.v1.9.1.js\"><\/script>')</script>");
输出应该来:
<script>window.jQuery || document.write('<script src="js/jquery.v1.9.1.js"></script>')</script>
但是来了:
<script>window.jQuery || document.write('<script src="js/jquery.v1.9.1.js"></script>"')"
无法弄清楚我生命中的错误
答案 0 :(得分:1)
基本上,发生的事情是当document.write
打印出来时
<script>window.jQuery || document.write('<script src=\"js/jquery.v1.9.1.js\"></script>')</script>
首先将</script>
解析为实际的脚本结束标记,即使它位于字符串内部,也会产生类似
<script>
window.jQuery || document.write('<script src=\"js/jquery.v1.9.1.js\">
</script>
')
</script>
字符串未结束(未终止的字符串文字),因为它的结束单引号现在在脚本之外,并且还有一个悬空的脚本结束标记。要阻止这种情况发生,你只需要像疯了一样逃避字符串中的脚本标记,特别是在字符串内的字符串中。以下是一个工作示例。
document.write("<script>window.jQuery || document.write('<script src=\"js/jquery.v1.9.1.js\"><\\\/script>')<\/script>");
答案 1 :(得分:0)
尝试这个
document.write("<script>window.jQuery || document.write('<script src=\"js/jquery.v1.9.1.js\"/>')<\/script>");