2011-06-11 29 views
0

我有以下的命名空間中定義包含DefaultHead關閉如下,它在DefaultHead上例外:'字符串是不正確的用雙引號+ JavaScript的

我不理解如何解決這個問題。

var PortalDemoSidebar = { 
    DefaultHead:'<script src="chrome://portal_demo/content/scripts/mainPage.js"></script>\ 
     <script src="chrome://portal_demo/content/scripts/jquery-1.5.1.min.js"></script>\ 
     <script src="chrome://portal_demo/content/settings/api_url.js"></script>\ 
     <script src="chrome://portal_demo/content/scripts/utilities.js"></script>\ 
     <script src="chrome://portal_demo/content/scripts/api_calls.js"></script>\ 
     <script src="chrome://portal_demo/content/scripts/jquery.xml.js"></script>\ 
     <script src="chrome://portal_demo/content/scripts/history.js"></script>\ 
     <link href="chrome://portal_demo/content/style/main_page.css" rel="stylesheet" type="text/css"></link>',  
+3

也許瀏覽器正在看''並終止腳本嗎?嘗試分割字符串,即'... <'+'/ script> ...' – 2011-06-11 13:17:00

回答

4

這裏有兩個可能的問題。

首先你有一個不支持的多行字符串文字。一個字符串文字不能包含換行符。如果您想要在單獨的行上分割字符串,則必須終止該字符串並在下一行開始一個新字符串,然後使用運算符連接它們。例如:

var x = 'This is' + 
    ' a long ' + 
    'string'; 

另一件事是字符串內的HTML代碼。瀏覽器在確定腳本標記中的內容時不會解析Javsscript代碼,因此當它在字符串文字中遇到</script>時,它會認爲它是標記的結尾。

如果您使用XHTML,您可以在腳本標記內添加一個CDATA標記,告訴瀏覽器直到CDATA標記結束後纔會有標記。另一種方法是確保字符串中沒有</script>,您可以通過在標記中間分割字符串來執行此操作:</scr'+'ipt>

相關問題