我经常看到以下 HTML 代码用于从内容交付网络加载jQuery,但如果CDN不可用,则会回退到本地副本(例如在Modernizr文档中):
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.js"></script>
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.6.1.min.js">\x3C/script>')</script>
我的问题是,为什么在document.write()
语句中的最后一个<
字符被替换为转义序列\x3C
?<
是JavaScript中的安全字符,甚至在同一个字符串中早些时候就已经使用过了,那么为什么要在这里对其进行转义呢?这样做只是为了防止糟糕的浏览器实现认为字符串中的</script>
是真正的脚本结束标记吗?如果是,那么真的有哪些浏览器会失败吗?作为跟进问题,我还见过几次使用
unescape()
的变体(如此答案中所示)。是否有原因使得该版本似乎总是替换所有<
和>
字符?