Строковый литерал неправильно закрывается двойной кавычкой + JavaScript - PullRequest
0 голосов
/ 11 июня 2011

У меня определено следующее пространство имен, содержащее элемент 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 Ответ

4 голосов
/ 11 июня 2011

Здесь возможны две проблемы.

Прежде всего, у вас есть многострочный строковый литерал, который не поддерживается.Строковый литерал не может содержать разрыв строки.Если вы хотите разбить строку на отдельные строки, вам нужно завершить строку и начать новую строку на следующей строке и использовать оператор + для их объединения.Пример:

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

Другая вещь - это HTML-код внутри строки.Браузер не анализирует код Javsscript, когда определяет, что находится в теге script, поэтому, когда он встречает </script> в строковом литерале, он будет считать, что это конец тега.

Если выИспользуя XHTML, вы можете добавить тег CDATA внутри тега script, чтобы сообщить браузеру, что разметки нет до тех пор, пока не закончится конец тега CDATA.Другой способ - убедиться, что внутри строки нет </script>, что можно сделать, разбив строку в середине тега: </scr'+'ipt>.

...