document.write动态加载脚本
我正在尝试动态加载脚本。 这是我的代码:
document.write('window.jQuery || document.write(\"\")');
这是在B.js里面,它作为脚本加载到A.html上。 但我得到错误。 双引号内的结束脚本标记被视为嵌套脚本标记并破坏代码。
任何想法如何解决这一问题?
在表示
在JavaScript字符串文字中。
转义/
保持JavaScript解析器的含义相同,但HTML解析器的含义不同。
由于您的HTML包含包含HTML的JavaScript,其中包含包含HTML(!!!)的JavaScript,因此您必须双重逃避最内层的JavaScript。
我认为这会奏效:
document.write('
...但它很糟糕,生成一个新的脚本元素似乎没有什么意义,只是为了决定是否要生成一个新的脚本元素。 你会得到相同的结果:
if (!window.jQuery) { document.write("
使用:
var s = document.createElement("script"); s.type = "text/javascript"; s.src = "http://somedomain.com/somescript"; $("head").append(s); //or using plain js (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(s);
动态负载的jquery库JavaScript的
总是使用CDN是一种很好的方法,但有时如果CDN出现故障(尽管很少见),但在这个世界上你永远不会知道任何事情都会发生。
下面给出jQuery代码检查jQuery是否从Google CDN加载,如果没有,则它从你的文件夹中引用jQuery.js文件。
它首先从Google CDN加载jQuery,然后检查jQuery对象。 如果没有成功加载jQuery,那么它将从硬盘驱动器位置引用jQuery.js文件。 在此示例中,jQuery.js是从Scripts文件夹加载的。
从它最内层的嵌套开始打破你的字符串 ,每次都考虑它将被解释的位置,以及它如何被编码。
此HTML将位于String ,转义引号和反斜杠内,并在嵌套中上升
window.jQuery || document.write("");
这个脚本将在HTML ,转义标记内,并在嵌套中上升
此HTML将位于String ,转义引号和反斜杠内,并在嵌套中上升
document.write('');
这将作为外部脚本加载,所以我们完成了。
我选择使用"<"+"tag>..<"+"/tag>"
样式来破坏标签,因为我发现它更容易逃脱。