2013-01-17 151 views
0

我目前正在开发一个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的等)已被下载以获取页面的来源。

难道这是另一种方式吗?谢谢。

回答

2

移动等待逻辑您的清单:
设置你的内容脚本在你的清单文件中run_at属性document_end

这将在加载DOM之后运行内容脚本,但在加载任何子资源(例如图像)之前之前的

在“document_end”的情况下,在DOM完成后立即注入文件,但在加载像图像和帧之类的子资源之前注入文件。

—谷歌文档

在你contentscript,发送HTML直接在你的后台脚本:

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

但要注意,注入的JavaScript页面可以修改HTML这样就可以结束了使用与浏览器中不同的HTML。

+0

它完美的工作,谢谢。 –

+0

@JeffreyMuller不客气。其实,我已经有几个月没有编写chrome扩展,但* run_at *是我的第一个猜测;) – ComFreek