ブラウザが提供する機能がユーザコードに置き換えられているかどうかを確認することはできますか? Firefoxは改行を返すためホスト機能が上書きされたかどうか確認できますか?
function alert(str){
document.write(str);
}
alert('hello world');
ブラウザが提供する機能がユーザコードに置き換えられているかどうかを確認することはできますか? Firefoxは改行を返すためホスト機能が上書きされたかどうか確認できますか?
function alert(str){
document.write(str);
}
alert('hello world');
ブラウザのメソッドがオーバーウイークされているかどうかを知ることは不可能です。例えばあなたが言うことができるすべてについて
function foo(){
return 'foo was called';
}
foo.toString = function() {
return 'function alert() {\n [garbage code]\n}';
};
var a = window.alert;
window.alert = foo;
a(window.alert);
document.write(alert);
は、デフォルトの応答を取得しない場合は、ホスト・メソッドののtoString方法が一般的に読み取り専用であることから、この方法はおそらく変更されたということです。しかし、デフォルトを取得した場合、変更されたかどうかはわかりません。
あなたは正規表現が必要である
if (/function alert\(\) \{\s*\[native code\]\s*\}/.test(alert))
確認することができます。
alert.toString
またはFunction.prototype.toString
を上書きすると簡単に無効にすることができます。
いいえ。ホストオブジェクトが上書きされているかどうかを確認することはできません – Raynos