</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>
\/
является допустимой escape-последовательностью/
, так почему бы не использовать ее вместо этих строковых литералов<
? Напримерdocument.write('<script src=foo.js><\/script>');
. Кроме того,</script>
это не единственная последовательность символов, которая может закрыть<script>
элемент. Немного больше информации здесь: mathiasbynens.be/notes/etago