Строковый литерал неправильно закрыт двойными кавычками javascript

#javascript #jquery #xul

#javascript #jquery #xul

Вопрос:

У меня определено следующее пространство имен, содержащее DefaultHead: member, в котором содержится список тегов скрипта, которые мне нужно загрузить

но когда я пытаюсь сформулировать это следующим образом, это выдает указанное выше исключение в заголовке 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. Возможно, браузер видит </script> и завершает скрипт там? Попробуйте разделить строку, т.Е., ...<' '/script>...

Ответ №1:

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

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

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

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

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