2016-07-17 6 views
0

확장 스크립트에 대한 작업을 수행 :새 탭을 열고 새 탭

function newtab() { 
    chrome.tabs.create({"url":domain,"selected":true}, function(tab) { 
     //-- 
    }); 
} 

를 내 확장 스크립트에서 나는 어떤 도메인에 새 탭을 열고입니다. 새 탭의 dom이로드되었는지 확인한 다음 새 탭의 dom에서 일부 작업을 실행하고 싶습니다.

크롬 확장 문서를 확인했지만이를 달성 할 수있는 적절한 방법을 찾을 수 없습니다.

제 안내 등을 부탁드립니다.

+0

[chrome.tabs.executeScript] (https://developer.chrome.com/extensions/tabs#method-executeScript)를 사용하십시오. 이 방법을 보여주는 많은 답변이 있으므로 많은 예제를 찾을 수있을 것 같습니다. – wOxxOm

+0

감사합니다 @ wOxxOm :) –

+0

간단한 사례의 예 : [특정 유형의 요소에 Chrome 확장 프로그램이있는 페이지가 얼마나 있는지 확인하는 방법] (http://stackoverflow.com/a/30380827) – wOxxOm

답변

1

Content Scripts은 DOM에 액세스하거나 수정할 수있는 유일한 부분입니다.

당신은 새로 열린 탭으로 콘텐츠 스크립트를 추가 할 Programmatic Injection 소위를 사용할 수 있습니다

function newtab() { 
    chrome.tabs.create({"url":domain,"selected":true}, function(tab) { 
     chrome.tabs.executeScript(tab.id, {file: "content_script.js"}); 
    }); 
} 

.executeScript()run_at parameter 대상입니다 document_idle 기본값. 이렇게하면 정적 DOM이 완전히로드 된 후에 만 ​​스크립트가 실행됩니다.

동적 DOM의 경우 (정적 내용이로드 된 후 페이지의 스크립트가 DOM을 더 생성 함) 으로 정의하면 "탭로드 됨"상태가 문제가됩니다. Listening to DOM changes 당신을 도울 수있다.

노트의 몇 : 새로운 페이지에

  • 프로그래밍 주입 페이지에 대한 host permissions이 필요합니다. 도메인을 미리 모르는 경우 "*://*/*" 또는 "<all_urls>"과 같이 광범위한 권한이 필요합니다.
  • "document_idle" 모든 리소스이로드되지는 않습니다. <img> 태그가 이미 있지만 이미지가로드되지 않았을 수 있습니다. 자세한 내용 및 조언은 run_at 설명서를 참조하십시오.
  • .executeScript()에 대한 콜백을 사용할 수 있습니다. 이는 가장 간단한 방법으로 스크립트에 응답을 전달할 수 있지만 signature of the expected callback을 이해해야합니다.
+0

고맙습니다. @ Xan. 나는이 문제를 해결했지만 당신의 대답은 어쨌든 매우 유익했다 :) –

관련 문제