我目前正在开发Chrome扩展程序,我必须在其中获取页面的HTML源代码。我目前使用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等)都已下载以获取页面的来源。
这是另一种制作类似的方式吗?谢谢。
答案 0 :(得分:2)
将等待逻辑移至清单:
→将清单文件中内容脚本的run_at
属性设置为document_end
。
这将在加载DOM之后运行内容脚本,但之前加载任何子资源(例如图像)。
在“document_end”的情况下,在DOM完成之后立即注入文件,但是在加载了图像和帧之类的子资源之前。
- Google文档
在您的内容中,直接将HTML发送到您的后台脚本:
var html = document.documentElement.outerHTML;
chrome.extension.sendMessage(null, html);
但请注意,在页面中注入JavaScript可能会修改HTML,因此您最终可能会得到与浏览器中不同的HTML。