文档写入给出奇怪的输出

时间:2013-06-27 13:14:38

标签: javascript

我正在编写一个脚本来检测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>"')"

无法弄清楚我生命中的错误

2 个答案:

答案 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>");