2014-05-23 4 views
0

페이지가로드되면 코드를 삽입하고 주어진 페이지를로드하는 간단한 확장 프로그램을 만들려고합니다.페이지를로드하고 코드를 삽입하는 Chrome 확장자

나는 다음과 같은 것을 생각해 냈습니다. 올바른 방법입니까? chrome.tabs.getCurrent에 대한 chrome.tabs documentation 인용

background.js

chrome.tabs.getCurrent(function (tab) { 
     chrome.tabs.update(tab.id, {url: "http://www.EXAMPLE.COM"}); 
    }); 

    chrome.tabs.onUpdated.addListener(function(tabId , info) { 
     if (info.status == "complete") { 
       chrome.tabs.executeScript(null, {file: "content_script.js"}); 
     } 
    }); 

답변

1

:

이 스크립트 호출이 만든되고 있다는 탭을 가져옵니다. 탭이 아닌 컨텍스트 (예 : : 배경 페이지 또는 팝업보기)에서 호출하면 정의되지 않을 수 있습니다.

현재 활성화 된 탭을 잡아하려면, 대신 chrome.tabs.query 사용해야합니다

chrome.tabs.query({currentWindow: true, active: true}, function(tabs){ 
    // Do something with tabs[0] 
}); 

을 다른 방법으로, 브라우저 작업에 클릭과 같은 사용자 입력에 반응하는 경우, 당신은 이미 공급하고 현재 탭 :

chrome.browserAction.onClicked.addListener(function(tab){ 
    // "tab" is the current active tab 
}); 

대신 이미 열려있는 탭을 잡는, 당신은 단순히 새로 만들 수 있습니다 (물론, 당신이 달성하려고하는지에 따라 달라집니다) :

chrome.tabs.create({url: "http://www.EXAMPLE.COM"}); 

현재 탭 (당신이 null을 사용) 모든 탭,로드가 완료되지 때마다에 컨텐츠 스크립트를 삽입하려고합니다 리스너 네가 만든 거지. 그것은 create/update 콜백에서 이렇게 즉

chrome.tabs.update(tab.id, {url: "http://www.EXAMPLE.COM"}, function(tab){ 
    chrome.tabs.executeScript(tab.id, {file: "content_script.js"}); 
}); 

참고 안전 : 당신이 페이지가이 시점에서로드가 완료되지 않았 음을 걱정할 필요가 없습니다. executeScriptrun_at parameter을 따르며, 기본값은 "DOM로드 후 언젠가"입니다.

관련 문제