什么“终止字符”将通常确保后续的JavaScript将运行?

问题描述:

是否存在可以在格式错误的JavaScript代码之后使用的字符序列,以确保后续脚本将被执行?什么“终止字符”将通常确保后续的JavaScript将运行?

这个想法是我们有单独的部门编写JavaScript代码,将被放置在同一页上。 “其他”组因恶意代码而臭名昭着。由于我的代码将在脚注中(通过site.master),我可以使用哪组字符来确保(或更有可能)我的代码将被执行?

// > "" ; */ 
alert("this code will always run, regardless of what happens before..."); 
+3

我不相信这样的事情存在... – jondavidjohn 2012-02-08 22:28:53

+0

让我想起vb6'错误继续' – PAULDAWG 2012-02-08 22:30:04

没有在的EcmaScript本身定义的。一个语法无效的程序根本无法运行。

在HTML中,</script><script>将关闭当前的SCRIPT并打开一个新的SCRIPT元素,并且由于它们是不同的程序,所以一个SCRIPT元素的内容解析失败不会导致其他SCRIPT元素的内容不能解析。

如果前面的内容始终是一个行注释,在你的榜样,任何行结束符就足够了,而EcmaScript的行终止符是

U+A  \n 
U+D  \r 
U+D,U+A \r\n 
U+2028 Line separator 
U+2029 Paragraph separator 

根据规范的部分7.3

+0

谢谢。那么跨越''标签的对象呢?比如'functions()'也许是原型?只有这样才能防止无效代码到'try..catch'? – LamonteCristo 2012-02-09 01:53:13

+0

'try ... catch'不会防止语法错误。 'try ... catch'只处理运行时抛出的异常。 – 2012-02-09 01:57:11

只要它在自己的script元素中,它应该没问题,不管之前发生了什么。

Example | Source