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);
        }
    });
});

内容.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

似乎问题在于您正在使用一些已弃用的功能。具体来说,使用您的代码,我在控制台日志中收到以下错误:

响应 tabs.getSelected 时出错:错误:sendRequest 和 onRequest 已过时。请改用 sendMessage 和 onMessage。

尽管可能仍然支持一些已弃用的东西,但它们肯定不会持续很长时间,因此迁移到最新的 API 和方法是一个好主意。即:

有关如何从选项卡获取一些 HTML 内容到弹出窗口(或背景页面)的详细答案,请参阅对相关问题的回答。


顺便说一句,如果您不使用background.js,则可以从清单中完全删除“背景”键。

于 2013-10-28T21:33:54.683 回答