Запуск Javascript с (или без) document.writeln? - PullRequest
1 голос
/ 12 мая 2011

Я смотрел на некоторые проблемы с отслеживанием и у меня возник вопрос по поводу запуска скриптов. Может кто-нибудь сказать мне, если есть разница между:

<script type="text/javascript" src="http://www.example.com/universalPixel.html"></script>

и

<script language="JavaScript"> document.writeln('<scri' + 'pt type="text/javascript" src="http://www.example.com/universalPixel.html"></scri' + 'pt>');</script>

Я видел эти два варианта и, к сожалению, не смог различить, есть ли существенная разница, зависящая от включения метода document.writeln. Или, может быть, другое различие, о котором я не знаю.

Спасибо за вашу помощь.

Alex

Ответы [ 2 ]

3 голосов
/ 12 мая 2011

document.writeln, вероятно, используется для динамического включения сценария с использованием этого странного метода конкатенации строк, поскольку браузер обрабатывает </script>, появляясь где угодно в качестве конца тега сценария, даже внутри строки JavaScript. Поэтому по этой причине следующее не будет работать правильно:

<script type="text/javascript">
    // code

    document.writeln('<script type="text/javascript" src="..."></script>");
    // ^^ the </script> above ends the previous <script> tag prematurely.

    // more code
</script>

Но есть и лучшие методы:

  1. Просто включите их как обычно, используя <script src="..">
  2. Динамическое создание включает использование серверного кода (т.е. PHP) вместо JavaScript
  3. Используйте библиотеку JS, которая обеспечивает динамическую загрузку библиотеки.
1 голос
/ 12 мая 2011

Поскольку document.writeLn не рекомендуется в XHTML, вы должны попытаться использовать опцию 1. Многие строгие браузеры даже игнорируют второй элемент, если используется соответствующий тип документа.

...