私はこれに何度か遭遇しましたが、それについての説明はありません。サイトに JS エラーはありませんでした。コードは実際に実行されています。それらを置き換えるとalert()
うまくいきます。
今日もそれが起こったので、コンソールオブジェクトでコンソールオブジェクトを確認しようとしましたが、何かがコンソールオブジェクトを上書きしたかのように、いくつかの不規則性を見つけました。
次のスクリーンショットは、この問題が発生したサイト (サイト A) のものです。
http://ompldr.org/vZ256Mw/Selection_004.jpg
log、warn、info が空の関数であることがわかりますか? コンソール オブジェクトは、コンソールが正常に動作するサイト (サイト B) とは異なります (スクリーンショットは次のとおりです)。
http://ompldr.org/vZ256Mg/Selection_003.jpg
現在、両方のサイトで実行されているコードはまったく同じです。サイト B は私のローカル インストールであり、サイト A はステージングであり、コードにはコンソール オブジェクトを上書きするものは何もないので、この動作の説明は何でしょうか?
nfroidure の提案に従って、他の何よりも前にそのコードを head セクションに追加し、これを取得uncaught error! (anonymous function) (anonymous function)
しました:
if (!("console" in window) || !("firebug" in console))
{
var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
"group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
window.console = {};
for (var i = 0; i < names.length; ++i)
window.console[names[i]] = function() {}
}
ifチェックが間違っていると思うので、これは責任があります。Chromeで"console" in window
trueになり、falseになり、コンソールメソッドが置き換えられます。"firebug" in window
そこにあるはず&&
ですよね?
更新:オペレーターを変更した後&&
、サイト A で動作するようになりましたが、あるサイトでのみトリガーされ、別のサイトではトリガーされない理由がわかりません。