0

現在、ページの HTML ソースを取得する必要がある Chrome 拡張機能を開発しています。現在、Chrome Messaging を使用しています。ここに私のソースコードがあります:

background.js

chrome.webNavigation.onComplete.addListener(function(e) {
        chrome.tabs.sendRequest(e.tabId, {
            action: 'getSource'
        }, function(r) {
            console.log(r);
        });
});

contentscript.js

chrome.extension.onRequest.addListener(function(request, sender, callback) {
    if (request.action == 'getSource')
        callback(document.documentElement.outerHTML);
});

ページのソースを取得するには、ページ内のすべてのデータ (画像、JavaScript など) がダウンロードされるのを待つ必要があるため、かなり遅いです。

そのようなものを作る別の方法はありますか?ありがとうございました。

4

1 に答える 1

2

待機ロジックをマニフェストに移動します。
run_atマニフェスト ファイル内のコンテンツ スクリプトのプロパティを に設定しますdocument_end

これにより、DOM がロードされた後、サブリソース (画像など) がロードされる前にコンテンツ スクリプトが実行されます。

「document_end」の場合、ファイルは DOM が完了した直後に挿入されますが、画像やフレームなどのサブリソースが読み込まれる前に挿入されます。

— Google のドキュメント

contentscript で、HTML をバックグラウンド スクリプトに直接送信します。

var html = document.documentElement.outerHTML;
chrome.extension.sendMessage(null, html);

ただし、ページに挿入された JavaScript によって HTML が変更される可能性があるため、ブラウザで取得したものとは異なる HTML になる可能性があることに注意してください。

于 2013-01-17T17:13:49.393 に答える