javascript
2010-12-10 135 views 4 likes 
4

我需要一点帮助。我必须创建一个包含更多JavaScript的JavaScript字符串,然后将其写入父窗口中的div标记。代码如下:javascript变量,包含</script>

<script language="javascript" type="text/javascript"> 
var jstr2 = ''; 
jstr2 += '<script language="javascript">\n'; 
jstr2 += 'function doPagingProducts(str) {\n'; 
jstr2 += 'document.frmPagingProducts.PG.value = str\;\n'; 
jstr2 += 'document.frmPagingProducts.submit()\;\n'; 
jstr2 += 'return false\;\n'; 
jstr2 += '}\n'; 
jstr2 += '</script>\n'; 
jstr2 += '\n'; 
</script> 

然而,创建的字符串的结束脚本标签实际关闭JavaScript和我得到的错误,如:

Error: unterminated string literal 
Line: 135, Column: 9 (The </script> line before the end of the string.) 
Source Code: 
jstr2 += ' 

有没有什么办法可以防止此问题。 。?

非常感谢您的帮助。

最好的问候,保罗


编辑我终于从JavaScript字符串提取最终</script>解决了这个问题。我在脚本显示的地方添加了一个结束标记。它凌乱,但它的作品。非常感谢您的评论。

+0

这是一个合法的问题。作为一名Web开发人员,我喜欢将基本的XSS尝试放入我工作的站点上的存储数据 - 例如命名实体“”;这不是一个全面的测试,但它有助于保持前端的诚实。我应该可以在HTML中输出包含这些字符串的脚本标记的JSON而不会出现问题。 – 2014-05-09 19:19:04

+0

http:// stackoverflow。com/questions/23386575/why-js -cant-understand-string-script/23386677#23386677 – 2014-05-21 15:29:48

回答

4

你要分割字符串:

jstr2 += '<' + '/script>\n'; 

这也是更好地注释掉脚本中的一切:

<script type="text/javascript"> 
<!--// 
    // your code here 
//--> 
</script> 

或者在HTML:

<script type="text/javascript"> 
//<![CDATA[ 
    // your code here 
//]]> 
</script> 

或者在XHTML :

  • 与HTML相同,但是#PCDATA代替CDATA。
6

把它写成:

jstr2 += '<\/script>\n'; 
17

SCRIPT标签内容无关,所以解析器只是不断通过内容运行,直到它找到一个/SCRIPT序列。当它发生时,它会将发现的内容传递给JS环境进行评估。这给了你未终止的文字错误,因为发送的内容在你开始的地方结束。 (JS解析器没有终止引号)。

摆脱与反斜杠

jstr2 += "<\/script>"; 

或其他一些斜线工作在这里休息破解序列中的触发点,并解决了这个问题(但仍给你留下了一些非常可疑代码)。

相关问题