相关疑难解决方法(0)

为什么在使用document.write()编写<script>标记时将其拆分?

为什么有些网站(或提供客户端javascript代码的广告客户)采用了在通话中拆分<script>和/或</script>标记的技术document.write()

我注意到亚马逊也这样做了,例如:

<script type='text/javascript'>
  if (typeof window['jQuery'] == 'undefined') document.write('<scr'+'ipt type="text/javascript" src="http://z-ecx.images-amazon.com/images/G/01/javascripts/lib/jquery/jquery-1.2.6.pack._V265113567_.js"></sc'+'ript>');
</script>
Run Code Online (Sandbox Code Playgroud)

html javascript

263
推荐指数
5
解决办法
12万
查看次数

当文字包含脚本标记时,"未终止的模板文字"语法错误

我正在使用ES6模板文字在字符串中构造一些HTML,到目前为止它一直运行良好.但是,只要我尝试将文字文本</script>放在我的字符串中,浏览器就会抛出并抛出语法错误:

SyntaxError: Unterminated template literal
Run Code Online (Sandbox Code Playgroud)

这是一个简单的JavaScript示例,它会抛出错误:

var str=`
<script>
</script>
`
var pre = document.createElement('pre')
pre.textContent = str
document.body.appendChild(pre)
Run Code Online (Sandbox Code Playgroud)

请参阅JS Fiddle中的上述代码.

似乎正在发生的事情是,它放弃了寻找最终文字引用,而是开始将所有内容视为文字HTML,因此在该点之后的所有JavaScript都被错误地视为HTML,而事实并非如此!

如果我更换script通过任何其他法律HTML标签(甚至是无效的标签,如scripty),那么它工作得很好,所以我不能看到这可怎么可能是一个语法错误或怪异的情况下,我认为我已经输入一个字符(如反击)但是却输入了另一个看起来很像它的东西.

我实际上是在创建一个字符串(据我所知,在编译时),浏览器应该试图将其视为HTML或以任何方式解析它.什么给出了什么?

html javascript script-tag ecmascript-6 template-literals

23
推荐指数
1
解决办法
2万
查看次数

使用&&或|| 在CDN后备 - 有区别吗?

这是一个快速的问题,可能会立即标记我为新手,但这里有:-)

在查看代码示例时,包括使用jquery cdn的回退,我看到使用&&或||的方法非常相似:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>
Run Code Online (Sandbox Code Playgroud)

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>!window.jQuery && document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>
Run Code Online (Sandbox Code Playgroud)

现在,我的问题很简单:两者之间是否存在差异(个人偏好和可读性除外)?

jquery fallback cdn

2
推荐指数
1
解决办法
723
查看次数