Сайтът се държи по различен начин, когато инструментите за разработчици са отворени IE11

Използвам следния шаблон в IE11 и не мога да разбера защо страничната лента се включва всеки път, когато се извършва навигация. Когато инструментите за разработчици са отворени, той се държи както бих искал. Лесно се демонстрира чрез щракване върху който и да е от разделите под UI елемент в дървото, докато работи IE11. Въпреки това ще забележите, че ако инструментите за разработчици F12 са отворени, страничната лента не се плъзга при всяко навигиране. Това не е проблем в Chrome. Има грешка с fastclick, която може да се появи, но работих без fastclick и все още се случва. Всяка помощ би била чудесна. Благодаря. https://almsaeedstudio.com/themes/AdminLTE/pages/UI/general.html


person poptarts    schedule 28.07.2015    source източник


Отговори (6)


Опитайте да премахнете console.log() от кода си.

console.log(), който трябва да помогне при отстраняване на грешки в Javascript, може да накара IE напълно да спре обработката на скриптове на страницата. За да добавите към мистерията, ако продължите да гледате страницата си в IE с отворени инструменти за разработка - изобщо няма да забележите проблем.

Обяснение

Причината за това е, че конзолният обект не се инстанцира, освен ако инструментите за разработка не са отворени в IE. В противен случай ще видите едно от двете неща:

  1. Javascript няма да се изпълни правилно
  2. Конзолата има криптични грешки, като например „обектът е недефиниран“ или други от този характер

Девет пъти от десет имате грешка console.log някъде в кода. Това не засяга никой друг браузър освен IE.

person sam100rav    schedule 28.07.2015
comment
всички повиквания към конзолата са коментирани, два пъти проверени сега и все още не вървят - person poptarts; 28.07.2015
comment
@poptarts просто от любопитство, разбрахте ли каква е основната причина? - person Yuanfei Zhu; 24.10.2016
comment
Точно с това се сблъскахме в интранет сайт, който трябваше да работи в режим на изглед на съвместимост: всяко извикване на console.log() просто тихо спираше целия JavaScript. Вместо да коментираме извикванията на console.log(), ние просто попълнихме мъниче, така че другите браузъри (или IE с отворена конзола) все пак да предоставят диагностична стойност: if (!window.console) { window.console = {}; window.console.log = function () { } }; - person storsoc; 03.03.2017

Друга потенциална причина, особено ако извършвате ajax повиквания, е, че отговорът на ajax може да бъде кеширан, когато инструментите за разработка са затворени, но обновен от сървъра, когато инструментите за разработка са отворени.

В IE отворете раздела Мрежа на Инструменти за разработчици, щракнете върху иконата за възпроизвеждане и деактивирайте бутона Винаги опреснявай от сървър. След това наблюдавайте дали някое от вашите ajax обаждания се връща с код за отговор 304 (непроменен). Ако са, тогава не получавате свежи данни от сървъра и трябва да актуализирате настройките за кеширане на страницата, която се извиква чрез ajax.

person Onkel-j    schedule 30.11.2017
comment
Това ми помогна благодаря! Сайтът работеше с инструменти за разработчици. Благодаря! - person Moises Sacal; 14.08.2018

Добавяйки към вече страхотните отговори (тъй като не мога да коментирам - изисква 50 повторения точки), съгласен с отговора от @sam100rav и коментара от @storsoc, открих, че в IE11 версия 11.1387.15063.0 с актуализирана версия 11.0.90 (KB4462949), че window.console наистина съществува като празен обект (window.console = {}). Следователно използвах вариант на polyfill от @storsoc, както е показано по-долу.

if (!window.console || Object.keys(window.console).length === 0) {
  window.console = {
    log: function() {},
    info: function() {},
    error: function() {},
    warn: function() {}
  };
}

person akaustav    schedule 22.10.2018

Както вече беше посочено, защото IE11 + Edge‹=16 е толкова глупав, че не поддържа console освен ако инструментите за разработчици не са отворени... Така че, ако отворите това, за да деактивирате кеширането, няма да видите някакви проблеми и може да си помислите, че проблемът се дължи само на кеша на браузъра... но не.. :@

Направих този "polyfill" за него (всъщност не прави polyfill, но кара IE да не извежда никакви грешки). Добавете го възможно най-рано на вашия сайт, тъй като всеки js може да използва console.log или console.warn и т.н.

window.console = typeof window.console !== 'object' || {};
console.warn = typeof console.warn === 'function' || function () {
  return this;
};
console.log = typeof console.log === 'function' || function () {
  return this;
};
console.info = typeof console.info === 'function' || function () {
  return this;
};
console.error = typeof console.error === 'function' || function () {
  return this;
};
console.assert = typeof console.assert === 'function' || function () {
  return this;
};
console.dir = typeof console.dir === 'function' || function () {
  return this;
};
console.table = typeof console.table === 'function' || function () {
  return this;
};
console.group = typeof console.group === 'function' || function () {
  return this;
};
console.groupEnd = typeof console.groupEnd === 'function' || function () {
  return this;
};
console.time = typeof console.time === 'function' || function () {
  return this;
};
console.timeEnd = typeof console.timeEnd === 'function' || function () {
  return this;
};
console.timeLog = typeof console.timeLog === 'function' || function () {
  return this;
};
console.trace = typeof console.trace === 'function' || function () {
  return this;
};
console.clear = typeof console.clear === 'function' || function () {
  return this;
};
console.count = typeof console.count === 'function' || function () {
  return this;
};
console.debug = typeof console.debug === 'function' || function () {
  return this;
};
console.dirxml = typeof console.dirxml === 'function' || function () {
  return this;
};
console.groupCollapsed = typeof console.groupCollapsed === 'function' || function () {
  return this;
};
person OZZIE    schedule 21.05.2019

Предполагам, че сте поправили това, откакто сте го публикували, тъй като не мога да видя поведението, което описвате във връзката си.

Наскоро обаче се сблъсках с подобен проблем, при който отворените инструменти за разработка промениха поведението не поради проблеми с конзолата, а защото отварянето на инструментите промени ширината на прозореца. Разликата в ширината на прозореца предизвика основна грешка в моя случай.

Свързана публикация тук.

person Mark Meuer    schedule 29.10.2015

Възможно е да сте настроили режима на съвместимост към по-нова версия на IE в конзолата за програмисти (вижте маркираната секция)въведете описание на изображението тук

person e.w. parris    schedule 30.06.2016