Форматирование этой строки JavaScript - PullRequest
1 голос
/ 01 июня 2010

Я пытаюсь отформатировать эту строку кода в моем всплывающем окне, но я сталкиваюсь с unterminated string literal ошибкой.

Может кто-нибудь сказать, пожалуйста, как мне лучше отформатировать это?

window.setTimeout("winId.document.write('<script src="../js/tiny_mce/tiny_mce.js" type="text/javascript"></script>\n')", 10);

Также укажите, будет ли эта строка кода нормально работать во всплывающем окне?

Ответы [ 6 ]

4 голосов
/ 01 июня 2010

Лучше не использовать строку, а анонимную функцию:

window.setTimeout(function () {
    winId.document.write(
      '<script src="../js/tiny_mce/tiny_mce.js" type="text/javascript"></script>\n'
    );
}, 10);

Использование строк в setTimeout и setInterval тесно связано с eval() и должно использоваться только в редких случаях. Смотри http://dev.opera.com/articles/view/efficient-javascript/?page=2

Также стоит отметить, что document.write() не будет работать правильно на уже проанализированном документе. Различные браузеры будут давать разные результаты, большинство очистит содержимое. Альтернатива - добавить скрипт, используя DOM:

window.setTimeout(function () {
    var winDoc = winId.document;
    var sEl = winDoc.createElement("script");
    sEl.src = "../js/tiny_mce/tiny_mce.js";
    winDoc.getElementsByTagName("head")[0].appendChild(sEL);
}, 10);
3 голосов
/ 01 июня 2010

Вы можете попробовать это, избегая двойных кавычек и <>, а также \ n:

window.setTimeout("winId.document.write('\<script src=\"../js/tiny_mce/tiny_mce.js\" type=\"text/javascript\"\>\</script\>\\n')", 10);
2 голосов
/ 01 июня 2010

Помимо необходимости избегать кавычек (как уже упоминали другие люди), вы не можете включать "</script>" (даже если оно в строке) нигде в теге <script>

Использование:

window.setTimeout(function () {
    winId.document.write(
      '<script src="../js/tiny_mce/tiny_mce.js" type="text/javascript"></scr' + 'ipt>\n'
    );
}, 10);

Вместо.

1 голос
/ 01 июня 2010

Это потому, что вы используете вложенные двойные кавычки. Кавычки разделяют строки, поэтому, когда вы переходите ко второму, он думает, что строка завершилась, как вы можете видеть по выделению цветом в опубликованном вами коде. Вам нужно убежать от них с помощью \":

window.setTimeout("winId.document.write('<script src=\"../js/tiny_mce/tiny_mce.js\" type=\"text/javascript\"></script>\n')", 10);
0 голосов
/ 10 октября 2012

Вы можете использовать этот онлайн-инструмент: http://jsbeautifier.org/ С наилучшими пожеланиями

0 голосов
/ 01 июня 2010

Вы должны экранировать "в атрибутах тега скрипта с помощью \", чтобы оно выглядело так:

window.setTimeout("winId.document.write('<script src=\"../js/tiny_mce/tiny_mce.js\" type=\"text/javascript\"></script>\n')", 10);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...