15

ページが実行されないようにGoogleChrome拡張機能を作成できますalert()か?

4

3 に答える 3

17

@MrGlassが言ったように、現在、Chrome拡張機能は別の環境で実行され、実際のwindowオブジェクトへのアクセスを制限し、拡張機能にのみ有効な複製を提供します。

これを解決するために、スクリプト要素をドキュメントに直接挿入できます。このようにして、ドキュメントの環境と実際のwindowオブジェクトにアクセスします。

まず、関数を作成しましょう(確認が非常に面倒だったため、「確認」も追加しました)。

var disablerFunction = function () {

    window.alert = function alert(msg) { console.log('Hidden Alert ' + msg); };
    window.confirm = function confirm(msg) { 
        console.log("Hidden Confirm " + msg); 
        return true; /*simulates user clicking yes*/ 
    };

};

ここで、その関数をテキストスクリプトで変換し、括弧で囲みます(ページ環境で実際の変数と競合する可能性を回避するため)。

var disablerCode = "(" + disablerFunction.toString() + ")();";

そして最後に、スクリプト要素を挿入し、すぐに削除します。

var disablerScriptElement = document.createElement('script');
disablerScriptElement.textContent = disablerCode;

document.documentElement.appendChild(disablerScriptElement);
disablerScriptElement.parentNode.removeChild(disablerScriptElement);
于 2017-02-05T13:07:06.657 に答える
16

はい、できます。alert()は単なるJavaScriptメソッドであり、実行することでその機能をオーバーライドできます。

window.alert = function alert(msg) {
  console.log('Hidden Alert ' + msg);
};

run_atマニフェストコンテンツスクリプト修飾子を介して、マニフェスト内のdocument_startでそのコンテンツスクリプトを実行することを忘れないでください。

それを行う拡張機能があると思います。開発者はそれをNiceAlertと名付けています。 https://chrome.google.com/extensions/detail/ehnbelnegmgdnjaghgomaakjcmpcakhk

于 2010-06-05T04:10:35.287 に答える
-5

ありがとうございました。それは助けになりました。しかし、私はそれを機能させるためにこれを行う必要があることに気づきました

location.href="javascript: window.alert = function(x) {console.log(x)};"

アラートを削除して確認したい場合は、

location.href="javascript: window.alert = function(x) {console.log(x)}; window.confirm = function(){return true;};";
于 2010-06-05T19:32:27.770 に答える