1

我正在编写一个脚本来检测 jQuery,如果它不存在则插入 Google CDN 版本和本地后备(不要问为什么......这不是我的想法),问题是当我尝试做文档时.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>"')"

无法弄清楚我的生活出了什么问题

4

2 回答 2

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>");
于 2013-06-27T13:48:48.820 回答
0

试试这个

document.write("<script>window.jQuery || document.write('<script src=\"js/jquery.v1.9.1.js\"/>')<\/script>");
于 2013-06-27T13:29:41.600 回答