双引号+ javascript没有正确关闭字符串文字

时间:2011-06-11 13:12:41

标签: javascript jquery xul

我定义了以下名称空间,其中包含DefaultHead:成员,该成员具有我需要加载的脚本标记列表

但是当我尝试按如下方式设置时,它会在DefaultHead上面给出异常:'

我不明白如何解决这个问题。

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>',    

1 个答案:

答案 0 :(得分:4)

这里有两个可能的问题。

首先,您拥有一个不受支持的多行字符串文字。字符串文字不能包含换行符。如果要在单独的行上拆分字符串,则必须终止字符串并在下一行开始一个新字符串,并使用+运算符将它们连接起来。例如:

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

另一件事是字符串中的HTML代码。浏览器在确定脚本标记中的内容时不解析Javsscript代码,因此当它在字符串文字中遇到</script>时,它会认为它是标记的结尾。

如果您使用的是XHTML,则可以在脚本标记内添加CDATA标记,以告知浏览器在CDATA标记结束之前没有标记。另一种方法是确保字符串中没有</script>,您可以通过在标记的中间分割字符串来完成:</scr'+'ipt>