上書きされた後、何とかconsole.logにアクセスできますか?上書き後にwindow.consoleにアクセス
window.console = { log: function (msg) { alert(msg); }, /* etc... */ };
元のconsole.log機能を回復することは可能でしょうか?
上書きされた後、何とかconsole.logにアクセスできますか?上書き後にwindow.consoleにアクセス
window.console = { log: function (msg) { alert(msg); }, /* etc... */ };
元のconsole.log機能を回復することは可能でしょうか?
コンソールを上書きする前にバックアップすることができます。
var oldConsole = window.console;
window.console = { log:function(msg){alert(msg)} //...};
次に、変数oldConsole
を使用できます。
oldConsole.log('test');
(これはすべてのブラウザでは動作しない場合があります):
var i = document.createElement('iframe');
i.style.display = 'none';
document.body.appendChild(i);
window.console = i.contentWindow.console;
@Downvoter:なぜdownvote? –
下記の答え(window.consoleの削除)がより便利です。私はそれがこの質問に対する受け入れられた答えであるべきだと言いたい。 – noah
@RocketHazmat iframeからコンソールを盗む考えは、かなり良いハックです! –
これはできません。誰でも上書きした場合を除いて、元に戻すコードが含まれています。
var customLog = {
oriLog: '',
Log: function(){
// create string to display
var displaystring = '';
for (var i = 0, len = arguments.length; i < len; i++) {
displaystring += arguments[i];
if (i + 1 != len)
displaystring += ', ';
}
alert(displaystring);
customLog.oriLog(arguments);
}
}
window.onload = function(){
if (console != null) {
customLog.oriLog = console.log;
console.log = customLog.Log;
}
}
編集(2017年4月8日):このアドバイスは、もはや窓のプロトタイプで定義され、それが実際にそれを削除します削除されたのFirefox 52とChrome 57 console
で、時代遅れではありません。少なくともFirefoxとクロームで定義されたconsole
オブジェクトに、あなたは、単にオリジナルのものを復元するために上書きされたプロパティを削除することができます
:
window.console = {};
delete window.console;
window.console.log("This works!");
console
プロパティが上に定義されたかのように、この作品window
オブジェクトのプロトタイプ - そうでない限り、ブラウザはここでいくつかの魔法をしています。
これはChromeの最新バージョンでは動作していないようです。 – RelaXNow
@RelaXNow:実際、このアドバイスは期限切れです。私はそのメモを付け加えた。 –
オリジナルとは何ですか?火かぶり? –