Клуб API Карт

Не правильно определяет браузер

Пост в архиве.

Я пользуюсь хромом:

 

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36

 

 

И init из

 

 

выглядит так: 

 

init('ymaps','http://api-maps.yandex.ru/2.0.33/debug/',true,{"name":"Chrome","version":"29.0.1547","engine":"WebKit","engineVersion":"537.36","osFamily":"Windows","osVersion":"6.1","isMobile":false,"cssPrefix":"Webkit","transitionEndEventName":"webkitTransitionEnd"},'package.standard,package.geoObjects,package.geoQuery,package.clusters',project_data,'ymaps2_0_33','') 

 

Что вполне логично. Но после того как у моих пользователей начала возникать такая ошибка:

Uncaught TypeError: Cannot read property 'paddingLeft' of undefinedcombine.xml?modules=2,3F4542@S4Y!V!Z!Y!27,@Q3*4b4d376@3C3$3{9r9p9l9q9n9o6n@…$4k!-1$1D0n2O0W121,081p0(200h1~1a2Q7W9^957X&jsonp_prefix=ymaps2_0_33:25613

 

И раскопки привели что у них вызов инита выглядит так:

 

init('ymaps','http://api-maps.yandex.ru/2.0.33/debug/',true,{"name":"MSIE","version":"8.0","engine":"Trident","engineVersion":"4.0","osFamily":"Windows","osVersion":"6.1","isMobile":false,"cssPrefix":"ms","transitionEndEventName":"MSTransitionEnd"},'package.standard,package.geoObjects,package.geoQuery,package.clusters',project_data,'ymaps2_0_33','')

 

 

Я грохнул свой профиль и с голым профилем получил такой же результат как и у моих пользователей. Наши хромы определяются как MSIE, что потом приводит к ошибке определения padding-а тут

 

if (browser.name == 'MSIE' && browser.documentMode < 9) {

            var value = element.currentStyle[property];

 

 

И понять почему так происходит у меня не получается. Я последовательно поставил все плагины которые у меня стоят на новый профиль, но это не помогло. В чем может быть проблема?

9 комментариев
Sergey Konstantinov
28 января 2016, 01:28
А user-agent при этом какой у вас? И не режет ли у вас случайно прокси/роутер заголовок User-Agent?

user-agent в обоих случаях одинаковый, как я указал в посте. Проверяю этим сайтом:
http://www.useragentstring.com/


Попробую выйти на админов и узнать про прокси. Меня смущает только то, что у меня сейчас открыта 2 хрома с 2мя разными профилями(мой рабочий, которому несколько лет, и голый) и в одном работает, в другом нет. Если бы дело было только в прокси 

Может у хрома есть какая-то настройка и по каким-то критерием он врубает метод совместимости со старыми сайтами и прикидывается IE?

Sergey Konstantinov
28 января 2016, 01:28
Вы можете посмотреть в сетевой панели, какой User-Agent хром указывает в заголовках.
  1. Request URL:http://api-maps.yandex.ru/2.0/?load=package.standard,package.geoObjects,package.geoQuery,package.clusters&lang=ru-RU&mode=debug
  2. Request Method:GET
  3. Status Code:200 OK
  4. Request Headersview source
    1. Accept:*/*
    2. Accept-Encoding:gzip,deflate,sdch
    3. Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
    4. Host:api-maps.yandex.ru
    5. Proxy-Connection:keep-alive
    6. Referer: ---удалено---
    7. User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36
  5. Query String Parametersview sourceview URL encoded
    1. load:package.standard,package.geoObjects,package.geoQuery,package.clusters
    2. lang:ru-RU
    3. mode:debug
  6. Response Headersview source
    1. Access-Control-Allow-Origin:*
    2. Age:13577
    3. Cache-Control:max-age=31536000
    4. Connection:Keep-Alive
    5. Content-Length:97044
    6. Content-Type:text/javascript; charset=utf-8
    7. Date:Thu, 19 Sep 2013 10:33:20 GMT
    8. Expires:Wed, 27 Nov 2013 21:03:20 GMT
    9. Proxy-Connection:Keep-Alive
    10. Server:nginx/1.2.1
    11. Vary:Accept-Encoding
    12. Via:1.1 TMG-MSK-N0O03
    13. X-Content-Type-Options:nosniff
    14. X-LIGHTTPD-LOCALE:ru_RU
Sergey Konstantinov
28 января 2016, 01:28
Попробуйте очистить кэш. Если не поможет, скажите свой ip пожалуйста.

Произошла непонятная вещь. Все взяло и заработало.

Произошло это после того как я загрузил пустую карту с ?load=package.standard&lang=ru-RU

И теперь работает корректно в обоих вариантах(с дебагом и без). Но не уверен что это связанно, потому что я не могу воспроизвести ошибку. Теперь в новом профиле работает сразу.

Но после того как у меня все заработало, я позвонил пользователю и у него все было по старому(возможно брало из кеша), после того как я перевел и его на версию без дебага и у него заработало.

В общем мой IP 91.199.80.90

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

В общем я так и не понял в чем дело.

Sergey Konstantinov
28 января 2016, 01:28
Всё просто: вы сменили URL и вам пришла свежая версия кода. А старый URL, полагаю, по-прежнему закэширован где-то на уровне браузера (или, быть может, вашего прокси).

Свой кеш я чистил много раз и смотрел чтобы ответ приходил не с кеша.

Скорей всего наш корпоративный прокси в этом виноват.