</script>
Усередині рядка litteral Javascript інтерпретується HTML парсер в якості закриває тега, викликаючи несподіване поведінку ( див приклад на JSFiddle ).
Щоб уникнути цього, ви можете розміщувати свій JavaScript між коментарями (такий стиль кодування був звичайною практикою, коли Javascript був погано підтримуваний серед браузерів). Це буде працювати ( див. Приклад у JSFiddle ):
<script type="text/javascript">
<!--
if (jQuery === undefined) {
document.write('<script type="text/javascript" src="http://z-ecx.images-amazon.com/images/G/01/javascripts/lib/jquery/jquery-1.2.6.pack._V265113567_.js"></script>');
}
// -->
</script>
... але якщо чесно, використовувати document.write
не те, що я вважав би найкращою практикою. Чому б не маніпулювати DOM безпосередньо?
<script type="text/javascript">
<!--
if (jQuery === undefined) {
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', 'http://z-ecx.images-amazon.com/images/G/01/javascripts/lib/jquery/jquery-1.2.6.pack._V265113567_.js');
document.body.appendChild(script);
}
// -->
</script>
\/
є дійсною послідовністю евакуації для/
, так чому б не просто використовувати це замість цих рядкових буквальних ухилень для<
? Напрdocument.write('<script src=foo.js><\/script>');
. Також</script>
це не єдина послідовність символів, яка може закрити<script>
елемент. Ще трохи інформації тут: mathiasbynens.be/notes/etago