#javascript #jquery #dom #unicode #cross-domain
#javascript #jquery #dom #юникод #междоменный
Вопрос:
В PHP у меня есть страница, заголовок которой задан как юникод. (не через мета-теги. У меня есть PHP, устанавливающий кодировку в UTF-8.)
После отображения страницы мне нужно динамически добавить <script>
тег, который ссылается на код другого домена.
В то время как междоменный Javascript, уже упомянутый в HTML страницы, анализируется должным образом, динамически добавляемый удаленный Javascript «Charset» игнорируется.
Следовательно, два JS-файла из одного домена интерпретируются очень по-разному. Тот, который уже был загружен в HTML, обрабатывается должным образом, но тот, который динамически добавляется, обрабатывается неправильно… Несмотря на то, что я предоставляю правильную кодировку.
Вот мой пример кода:
$('#footer').after( $('<script>').attr('type','text/javascript').attr('charset','ISO-8859-1').attr('src','//remoteJavascript.js') );
Я также использую jQuery 1.6.2.
Комментарии:
1. Интересно, что у вас это не работает (у меня это работает до тех пор, пока я устанавливал
charset
раньшеsrc
), но в целомscript charset
атрибут в любом случае не поддерживается кроссбраузерно. Выполнение сценария с использованием кодировки, отличной от той, в которой находится родительская страница, раздражает и непоследовательно; почти всегда лучше изменить сценарий, чтобы он соответствовал кодировке или не полагался на необработанные символы, отличные от ASCII.2. В конце концов, я обвинил Chrome и заставил свой сайт предоставлять контент в стандартном ISO. Своего рода боль — означает, что мне придется удалить все символы Юникода.
3. Вы все еще можете использовать символы, отличные от ASCII, в строковых литералах JS, используя
u
экранирование, поэтому обычно это не проблема.