Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   Не правильно кодируется подключаемый внешний JS в IE (https://javascript.ru/forum/css-html-internet-explorer/22873-ne-pravilno-kodiruetsya-podklyuchaemyjj-vneshnijj-js-v-ie.html)

Modder 03.11.2011 19:28

Не правильно кодируется подключаемый внешний JS в IE
 
Подключаю парочку скриптовых JS файлов с других сайтов. В ИЕ они не понятно кодируются, из-за чего не работают.
Типо такого:
Код:

w7’очьЉ¶sЗlFER¤DZ–slЩ3с$Ћ}c'™­F‡ўZmЉM“”dGЈэны<U(
charset для js указывать пробовал, не помогает.
Почему-то раньше все работало, вот перестало само по себе)
ИЕ, чтоб тебя...:-E

Может кто знает решение проблемы?

trikadin 03.11.2011 20:04

Проверьте, совпадают ли кодировки у html-страницы и js-файла.

Modder 03.11.2011 20:07

Как это проверить? Не думаю что в этом дело.
charset для js пробовал разные указывать, результат все тот же.

lord2kim 03.11.2011 21:03

Цитата:

Сообщение от Modder (Сообщение 134296)
Как это проверить? Не думаю что в этом дело...

кодировку своей страницы вы думаю знаете...откройте подключаемый .js файл в браузере и проверьте его кодировку (IE - контекстное меню->кодировка; FF - вид->кодировка; Opera - Главное меню->страница->кодировка)

trikadin 03.11.2011 21:52

Цитата:

Сообщение от Modder
Как это проверить? Не думаю что в этом дело.

Это вы зря, думать надо.

Сохраните и html-страницу, и js-файл в одной кодировке. Это можно сделать даже в блокноте.

Modder 04.11.2011 00:17

Кодировки проверил. Совпадают. Как я и говорил, дело не в них.
Символы вообще не на какую кодировку не похожи.

А вот прошло время, и скрипты снова заработали. Я ничего не делал! Вот такая вот чудасия :) Причем разные файлы скриптов заработали в разное время. Думаю решение проблемы не найдется.

Цитата:

Сообщение от trikadin (Сообщение 134309)
Это вы зря, думать надо.

Как раз таки я думаю, что пишу!

Цитата:

Сообщение от trikadin (Сообщение 134309)
Сохраните и html-страницу, и js-файл в одной кодировке. Это можно сделать даже в блокноте.

А Вы читаете, что я пишу? js-файл подключаю с других сайтов! Как я его сохраню?

P.S. С вебом я работаю уже давно, и отличаю элементарные ситуации от "нестандартных". Не надо думать, что я очередной чайник, который не может запустить код.

trikadin 04.11.2011 01:36

Цитата:

Сообщение от Modder
P.S. С вебом я работаю уже давно, и отличаю элементарные ситуации от "нестандартных". Не надо думать, что я очередной чайник, который не может запустить код.

Уж извините) Привычка. Я, когда друзьям через инет объясняю, как установить программу - расписываю всё до щелчка мыши. Иначе гарантия непонимания стопроцентная.

Но вообще говоря, можно было посмотреть, какая кодировка у скриптов с других сайтов, и сохранить страницу в такой же. Дело, конечно, осложняется тем, что у них может быть разная кодировка))

Gvozd 04.11.2011 02:36

Люди, вы чего? совсем рехнулись?
Кто расскажет мне какие символьные кодировки имеют способ представления латиницы(большая часть JS-кода в норме) отличный от большинства кодировок, поставлю ему плюс.
В подавляющем большинстве кодировок латиница задается ровно одними и теми же байтами.
Даже если и есть такие кодировки, которые по-другому кодируют латиницу, то я полагаю, "случайно" получить или сконвертировать текст в эту кодировку невозможно, в принципе.

На символы русского алфавита, в неверной кодировке этот код также не похож.
Информация по версии сами-знаете-кого.

Вывод: не в кодировке дело, никоим боком.

А вот дальше, моя ИМХО:
Похоже на gzip-сжатие, которое не было распаковано браузером, а выведено прямым текстом.
Такое могло случится при неправильной настройке/экспериментах над сервером, отдающим JS-ки, и в случае если IE не распаковывает контент из gzip, если нету нужных заголовков.
Последнее легко проверить, но мне лениво

trikadin 04.11.2011 02:41

А, и правда) Мда, это я лоханул...

Modder 04.11.2011 02:44

Цитата:

Сообщение от Gvozd (Сообщение 134370)
Похоже на gzip-сжатие

Вот это больше похоже на правду)

Цитата:

Сообщение от Gvozd (Сообщение 134370)
Такое могло случится при неправильной настройке/экспериментах над сервером, отдающим JS-ки

Т.е. я ничего с этим сделать не смогу? Зависит только от источника?

Gvozd 04.11.2011 03:24

Цитата:

Сообщение от Modder
Т.е. я ничего с этим сделать не смогу? Зависит только от источника?

Если это то, что я предположил, то да

UDN 04.11.2011 16:58

Каков вопрос, таков и ответ))
На проблему с gzip или IE, здесь и не пахнет, как и на проблему кодировкой.

Решение проблемы с отсутствующим кодом или ссылкой на проблемный код, только по символьной строке (выдаваемый за код), это уравнение с более чем 2 неизвестными.
Поэтому адекватного ответа вы не найдете!))

Если FF по вашим словам работает корректно, так откройте им скрипт и скопируйте, куда вам требуется.


Цитата:

Сообщение от Modder (Сообщение 134334)
А Вы читаете, что я пишу? js-файл подключаю с других сайтов! Как я его сохраню?

ну так если у вас есть ссылка на скрипт, введете ее в адресную строку рабочего браузера.

Modder 04.11.2011 18:20

UDN, понял. Если проблема снова появится, сохраню файл через ИЕ и покажу, с ссылкой на исходник. Пока все норм.

Цитата:

Сообщение от UDN (Сообщение 134476)
Если FF по вашим словам работает корректно, так откройте им скрипт и скопируйте, куда вам требуется.

Скрипты обновляются чуть ли не каждый день. Не буду же я их каждый день сохранять и заливать на свой сервер?

UDN 04.11.2011 19:31

Оставьте на своем.. стабильную версию, продолжайте пользоваться подключаемой с чужого сервера.
Установите в документе флаг, корректности скрипта (может сервер заглючил или используют для оптимизации свой алгоритм сжатия и т.д.)
и в ситуации возникновения проблем динамически замените скрипт на свой.
Это при желание, для корректной работы вашего кода(если подобная проблема зачастит).))

Modder 05.11.2011 17:03

Цитата:

Сообщение от UDN (Сообщение 134514)
Установите в документе флаг, корректности скрипта

Как это сделать?

UDN 05.11.2011 19:40

При загрузке скриптов, их объекты, функции, переменные и т.д.
Попадают в область видимости вашего объекта "window"

/* подгружаемая функция main()*/		 
// function main(){};	
typeof(main)           // "undefined"
window.main           // undefined
"main" in window      // false    
try {var a=main;} catch (e) {}  // если main не инициализирован возникнет исключение


Этого достаточно.

По поводу флага, в javascript это любая переменная.
Я применил это слово условно, а не буквально(мало известной возможности).

var flagBag=!window.main;       // true - если не рабочий код



/** Проверка на валидность
sVar:String - проверяемый элемент коллекции.*/
function isVar(sVar){return (sVar in window)}


/**Элементы рабочего скрипта*/
var A={};function testA(){};

/**Элементы не рабочего скрипта
var B={};function testB(){}*/

/**тест рабочего*/
isVar("A")     		// true		
isVar("testA")		// true		
/**тест не рабочего*/
isVar("B")    		// false
isVar("testB")		// false


Если скрипт не загрузится, то и функция не будет доступна, но это вы и без меня понимаете.

Modder 05.11.2011 22:53

Интересно. Спасибо. Возьму на заметку.

Modder 06.11.2011 04:20

Вложений: 2
Вот оно, опять!

Выкладываю "неправильный" js файл, а также нормальный. Переименовал его в txt, чтобы на форум загрузить.
Как видно разница "веса" между ними почти в 3 раза. Так что "неправильный" файл скорее всего сжат.

Оригинал: http://vkontakte.ru/js/api/xdm.js?1

Но мне еще кажется, что проблема из-за "?1" на концах ссылок.
Поясняю. Пробовал разные варианты сохранения:

1. Если сохранить через ИЕ этот файл по ссылке http://vkontakte.ru/js/api/xdm.js, сохранится нормально.

2. Если сохранить через ИЕ этот файл по ссылке http://vkontakte.ru/js/api/xdm.js?, сохранится нормально.

3. Если сохранить через ИЕ этот файл по ссылке http://vkontakte.ru/js/api/xdm.js?1, сохранится неправильно.
Но! После этого, обновляю страницу, содержащую подключаемые скрипты, как именно этот файл теперь воспринимает правильно! Если сохранить способами 1, 2, такого не произойдет.

P.S. UDN, ваш способ не получится, т.к. там много подгружаемых файлов в связке.

UDN 06.11.2011 05:55

2. Требования к файлам, специфицированным атрибутом SRC

Внешние файлы с кодом JavaScript не могут содержать никаких тэгов HTML: они обязаны содержать только операторы и определения функций JavaScript.

Внешние файлы JavaScript должны иметь расширение файла .js, и сервер обязан отображать расширение .js в MIME-тип application/x-~javascript, который сервер отсылает обратно в шапке/header HTTP. Для отображения расширения в MIME-тип добавьте строку type=application/x-javascript exts=js в файл mime.types в директории config сервера, а затем перезапустите сервер.

Если сервер не отображает .js в MIME-тип application/x-~javascript, Navigator неправильно загружает файл JavaScript, специфицированный атрибутом SRC.

ПРИМЕЧАНИЕ: Это требование не применяется, если вы используете локальные файлы.

UDN 06.11.2011 07:21

Прости но как не пытался вызвать эту ошибку, один черт работает((
<html>
<head>
<script src="http://vkontakte.ru/js/api/xdm.js"></script>
</head>
<body>
<script language="javascript" type="text/javascript">
function isVar(sVar){return sVar in window};

  alert(isVar("fastXDM"));      // true - скрипт рабочий
</script>
</body>


Как ты ее ловишь((

trikadin 06.11.2011 13:34

Modder, попробуйте написать в техподдержку контакта.

Modder 06.11.2011 14:04

Цитата:

Сообщение от UDN (Сообщение 134725)
Прости но как не пытался вызвать эту ошибку, один черт работает((
<script src="http://vkontakte.ru/js/api/xdm.js"></script>

Как ты ее ловишь((

Я же пишу, это бывает не всегда! И не во всех скриптах. Вот сейчас все нормально. Да к тому же ошибка ловится не по этому адресу, а по
http://vkontakte.ru/js/api/xdm.js?1


Цитата:

Сообщение от trikadin (Сообщение 134758)
Modder, попробуйте написать в техподдержку контакта.

В том то и дело, что это не только с файлами контакта происходит. Один раз наблюдал неправильную загрузку скрипта по вот такой ссылке:
http://s7.addthis.com/js/250/addthis...0ac&domready=1

UDN 06.11.2011 15:17

Я пробовал
http://vkontakte.ru/js/api/xdm.js?1
Результат тот же, работает.
?search
Хотите сказать, что у вас не корректно обрабатывается, строка поиска.
У атрибута SRC ,search обрезается хотите вы этого или нет.
search работает только с HREF и URL, а для SRC при всем желание search, отбросится.
Следовательно работает только по .JS

<script src="http://vkontakte.ru/js/api/xdm.js##pubid=ra-4e424a923db750ac&domready=1"></script>


<script src="http://vkontakte.ru/js/api/xdm.js?1"></script>


<script src="http://vkontakte.ru/js/api/xdm.js?abracadabra"></script>


При любом ?search, не могу эмитировать вашу ошибку.

Всегда возвращается http://vkontakte.ru/js/api/xdm.js

Поэтому проверьте поддерживает ли ваш сервер
mime.types:
text/javascript
application/x-javascript

http://vkontakte.ru/js/common.js?198 Content-Encoding: application/x-javascript. File size 100.8 Kb.
http://vkontakte.ru/js/lang0_0.js?1933 Content-Encoding: text/javascript; charset=windows-1251. File size 51.68 Kb.


Часовой пояс GMT +3, время: 05:13.