1

以前はdocument.body.outerHTMLタブから html を取得していましたが、それができません

マニフェスト.json:

{
    "name": "SEO Analytic",
    "description": "Adds a print button to the browser.",
    "version": "1.2",
    "manifest_version": 2,

    "background": {
        "scripts": ["background.js"],
        "persistent": false
    },
    "content_scripts": [
        {
            "matches": ["<all_urls>"],
            "js":      ["content.js"]
        }
    ],

    "permissions": ["tabs", "http://*/*", "https://*/*"],

    "browser_action": {
        "default_title": "SEO Analytic",
        "default_popup": "popup.html"
    }
}

popup.js:

chrome.tabs.getSelected(null, function(tab) {
    chrome.tabs.sendRequest(tab.id, {method: "getText"}, function(response) {
        if (response.method == "getText") {
            alltext = response.data;
            alert(alltext);
        }
    });
});

content.js:

chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
    if (request.method == "getText") {
        sendResponse({
            data: document.body.outerHTML,
            method: "getText"   // same as innerText
        });
    }
});
4

1 に答える 1

1

問題は、非推奨の機能を使用していることにあるようです。具体的には、コードを使用すると、コンソール ログに次のエラーが表示されます。

tab.getSelected への応答でエラーが発生しました: エラー: sendRequest と onRequest は廃止されました。代わりに sendMessage と onMessage を使用してください。

廃止されたものの一部はまだサポートされている可能性がありますが、長くは続かないので、最新の API とメソッドに移行することをお勧めします。すなわち:

  • chrome.tabs.getSelectedの代わりにchrome.tabs.queryを使用してください
  • chrome.tabs.sendRequestの代わりにchrome.tabs.sendMessageを使用します
  • chrome.extension.onRequestの代わりにchrome.runtime.onMessageを使用します

タブからポップアップ (またはバックグラウンド ページ) に HTML コンテンツを取得する方法の詳細な回答については、関連する質問に対する私の回答を参照してください。


ところで、を使用していない場合はbackground.js、マニフェストから「background」キーを完全に削除できます。

于 2013-10-28T21:33:54.683 に答える