3

document.write関数をインターセプトする必要があるChrome拡張機能に取り組んでいます(注:コンテンツスクリプトを使用しています)。私はここでメソッドを使用しています:http ://sitr.us/2012/09/04/monkey-patching-document-write.html しかし、それは正しく機能していません。これは私が今持っているものです:

(function() {
    var originalWrite = document.write;
    alert("checkpoint 1");
    document.write = function() {
        alert("checkpoint 2");

        //secret stuff here         

        return Function.prototype.apply.call(
                        originalWrite, document, arguments);    
    }
})();

ただし、Webページでdocument.writeを呼び出すと、フック内の「チェックポイント2」アラートが呼び出されることはありません。私は何が間違っているのですか?

4

1 に答える 1

4

拡張機能は独自のサンドボックスで実行され、WebページのJavaScript環境にアクセスできません。拡張機能を上書きしても、Webページ自体document.writeの機能には影響しません。document.write

ドキュメントからの引用は次のとおりです。

ただし、コンテンツスクリプトにはいくつかの制限があります。彼らがすることはできません:

  • chrome。*APIを使用します(chrome.extensionの一部を除く)
  • 拡張機能のページで定義されている変数または関数を使用する
  • Webページまたは他のコンテンツスクリプトによって定義された変数または関数を使用する

document.writeWebページの機能を変更するには、スクリプトをDOMに挿入する必要があります。

于 2013-01-23T02:48:58.830 に答える