Я использую следующий шаблон в IE11 и не могу понять, почему боковая панель поет каждый раз, когда происходит навигация. Когда инструменты разработчика открыты, он ведет себя так, как мне хотелось бы. Его легко продемонстрировать, щелкнув любую из вкладок под элементом пользовательского интерфейса в дереве во время работы IE11. Однако вы заметите, что если инструменты разработчика F12 открыты, боковая панель не скользит каждый раз, когда происходит навигация. Это не проблема в хроме. Существует ошибка с fastclick, которая может появиться, однако я запускал без fastclick, и это все еще происходит. Любая помощь будет здорово. Спасибо. https://almsaeedstudio.com/themes/AdminLTE/pages/UI/general.html
Сайт ведет себя по-разному, когда открыты инструменты разработчика IE11
Ответы (6)
Попробуйте удалить все console.log()
из кода.
console.log()
, который должен помочь при отладке Javascript, может привести к тому, что IE полностью перестанет обрабатывать скрипты на странице. Чтобы добавить к загадке, если вы продолжите смотреть свою страницу в IE с открытыми инструментами разработки, вы вообще не заметите проблемы.
Пояснение
Причина этого в том, что объект консоли не создается, если devtools не открыт в IE. В противном случае вы увидите одно из двух:
- Javascript не будет выполняться правильно
- Консоль имеет загадочные ошибки, такие как «объект не определен» или другие подобные
В девяти случаях из десяти у вас где-то в коде есть ошибочный файл console.log. Это не влияет ни на один браузер, кроме IE.
if (!window.console) { window.console = {}; window.console.log = function () { } };
- person storsoc; 03.03.2017
Другая возможная причина, особенно если вы выполняете вызовы ajax, заключается в том, что ответ ajax может кэшироваться, когда инструменты разработки закрыты, но обновляться с сервера, когда инструменты разработки открыты.
В IE откройте вкладку Сеть в разделе Инструменты разработчика, щелкните значок воспроизведения и снимите флажок Всегда обновлять с сервера. Затем посмотрите, возвращаются ли какие-либо из ваших вызовов ajax с кодом ответа 304 (не изменено). Если они есть, то вы не получаете свежие данные с сервера и вам необходимо обновить настройки кеширования на той странице, которая вызывается через ajax.
Добавляя к уже замечательным ответам (поскольку я не могу комментировать - требуется 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() {}
};
}
Как уже указывалось, это потому, что 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;
};
Я предполагаю, что вы исправили это, поскольку опубликовали его, поскольку я не вижу поведения, которое вы описываете в своей ссылке.
Однако недавно я столкнулся с похожей проблемой, когда открытые инструменты разработчика изменили поведение не из-за проблем с консолью, а из-за того, что открытие инструментов изменило ширину окна. В моем случае это была разница в ширине окна, которая вызвала основную ошибку.
Связанный пост здесь.