2013-01-17 3 views
0

현재 페이지의 HTML 소스를 가져와야하는 Chrome 확장 프로그램을 개발 중입니다. 현재 Chrome 메시징을 사용하고 있습니다. 여기 내 소스 코드 : 나는 기다릴 필요가 있기 때문에 그것은 꽤 느린페이지 소스 크롬 확장자 가져 오기

chrome.extension.onRequest.addListener(function(request, sender, callback) { 
    if (request.action == 'getSource') 
     callback(document.documentElement.outerHTML); 
}); 

background.js

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

contentscript.js 해당 이미지, 자바 스크립트 등의 모든 데이터 (, 등)가 다운로드되어 페이지의 소스를 가져옵니다.

이와 비슷한 것을 만드는 또 다른 방법이 있습니까? 고맙습니다.

답변

2
가 매니페스트에 논리를 기다릴 이동

:
document_end에 매니페스트 파일에 콘텐츠 스크립트의 run_at 속성을 설정합니다.

DOM로드 후 콘텐츠 스크립트가 실행되지만 이전에 이로드됩니다. 하위 리소스 (예 : 이미지)가로드됩니다.

"document_end"의 경우 파일은 DOM이 완료된 직후에 이미지와 프레임과 같은 하위 리소스가로드되기 전에 삽입됩니다. 따라서 당신이 끝날 수있는 HTML을 수정할 수있는 페이지에서 자바 스크립트를 주입

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

그러나 참고 :

— 구글 문서 당신의 contentscript에서

, 직접 당신의 배경 스크립트를 HTML을 보내 브라우저와 다른 HTML로

+0

완벽하게 작동합니다. 감사합니다. –

+0

@JeffreyMuller 여러분 환영합니다. 실제로 크롬 확장 프로그램을 몇 달 동안 프로그래밍하지 않았지만 * run_at *은 내 첫 번째 추측이었습니다.) – ComFreek