0

我目前正在开发一个 Chrome 扩展程序,我必须在其中获取页面的 HTML 源代码。我目前使用 Chrome 消息。这是我的源代码:

背景.js

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

内容脚本.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 完成后立即注入,但在图像和帧等子资源加载之前。

— 谷歌文档

在您的内容脚本中,将 HTML 直接发送到您的后台脚本:

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

但请注意,页面中注入的 JavaScript 可能会修改 HTML,因此您最终可能会得到与浏览器中不同的 HTML。

于 2013-01-17T17:13:49.393 回答