2009-02-11 3 views
4

Я работаю над плагином jQuery и пытаюсь создать единый кросс-браузерный консольный объект для отладки. Плагин будет использовать Firebug или FirebugLite, но также позволяет пользователю выбирать собственный консольный объект браузера, если он доступен. Для Safari/Chrome методы консоли принимают только один аргумент, тогда как API-интерфейс Firebug (который я пытаюсь реплицировать) принимает любое количество аргументов, которые печатаются как конкатенированная строка. Я использую следующий код, чтобы переопределить нативный метод журнала консоли:Глобальный объект консоли в Safari/Chrome сбрасывается

window.console._log = window.console.log; 
window.console.log = function(){ 
    window.console._log($.makeArray(arguments).join(", ")); 
}; 

У меня есть тестовая страница, которая будет срабатывать console.log («str1», «str2») команда по щелчку. Первые несколько раз сообщения журнала работают должным образом, но затем через некоторый период времени (обычно всего несколько секунд) сообщения журнала начинают печатать только первый аргумент. Это похоже на то, что объект консоли восстанавливается в исходное, собственное состояние и мой метод overridden log() уничтожается. Есть ли у кого-нибудь больше информации об этом или может быть обходной путь?

ответ

1

Возможно, вам больше удастся заменить весь объект консоли? Это работает для меня:

window._console = window.console; 
window.console = { 
    log: function() { 
     window._console.log($.makeArray(arguments).join(", ")); 
    } 
}; 

FWIW, в источнике WebCore IDL, то console свойство DOMWindow является marked as Replaceable, в то время как the properties of the console object are not.

 Смежные вопросы

  • Нет связанных вопросов^_^