Сайт ведет себя по-разному, когда открыты инструменты разработчика IE11

Я использую следующий шаблон в IE11 и не могу понять, почему боковая панель поет каждый раз, когда происходит навигация. Когда инструменты разработчика открыты, он ведет себя так, как мне хотелось бы. Его легко продемонстрировать, щелкнув любую из вкладок под элементом пользовательского интерфейса в дереве во время работы IE11. Однако вы заметите, что если инструменты разработчика F12 открыты, боковая панель не скользит каждый раз, когда происходит навигация. Это не проблема в хроме. Существует ошибка с 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 с открытыми инструментами разработки, вы вообще не заметите проблемы.

Пояснение

Причина этого в том, что объект консоли не создается, если devtools не открыт в 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 = {}). Поэтому я использовал вариант полифилла от @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 если не открыты инструменты разработчика... Поэтому, если вы откроете это, чтобы отключить кэширование, вы не увидите любые проблемы, и вы можете подумать, что проблема была только из-за кеша браузера... но нет.. :@

Я сделал для него этот «полифилл» (на самом деле он не полифилл, но заставляет 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