2009-02-11 5 views
4

Je travaille sur un plugin jQuery et j'essaie de créer un objet de console multi-navigateur uniforme pour le débogage. Le plugin utilisera Firebug ou FirebugLite mais permet également à l'utilisateur de choisir l'objet console natif du navigateur, s'il est disponible. Pour Safari/Chrome, les méthodes de la console acceptent seulement 1 argument, tandis que l'API de la console Firebug (que j'essaie de répliquer) accepte n'importe quel nombre d'arguments qui sont imprimés comme une chaîne concaténée. J'utilise le code suivant pour remplacer la méthode du journal de la console native:Objet de console globale dans Safari/Chrome en cours de réinitialisation

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

J'ai une page de test qui se déclenche console.log ("str1", "str2") commande en cliquant dessus. Les premières fois, les messages de journal fonctionnent comme prévu, mais après un certain laps de temps (généralement quelques secondes), les messages de journal commencent à imprimer uniquement le premier argument. C'est comme si l'objet console était restauré dans son état natif d'origine et que ma méthode surchargée de log() était en train d'être détruite. Quelqu'un at-il plus d'informations à ce sujet ou pourrait-il y avoir une solution de contournement?

Répondre

1

Peut-être pourriez-vous avoir plus de chance en remplaçant l'ensemble de l'objet Console? Cela a fonctionné pour moi:

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

FWIW, dans la source WebCore IDL, la propriété console de DOMWindow est marked as Replaceable, alors que the properties of the console object are not.

Questions connexes