javascript
2010-12-10 37 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>"; 

或其他一些斜線工作在這裏休息破解序列中的觸發點,並解決了這個問題(但仍給你留下了一些非常可疑代碼)。

相關問題