2014-04-02 3 views
2

크롬 확장을 사용하여 새 탭을 만들고 탭을로드 할 때 tab.id으로 표시하려고합니다. 페이지가로드되었지만 콜백 기능이 작동하지 않습니다 (이제 tab.id과 함께 경고가 표시됨).chrome.tabs.create - 콜백 함수가 호출되지 않음

background.js 파일 :

chrome.tabs.create({'url': 'http://www.google.com'}, function(tab){ alert(tab.id) }) 

의 manifest.json 파일 :

{ 
    "name": "Test", 
    "version": "1.0", 
    "description": "Test plugin", 
    "browser_action": { 
     "default_popup": "popup.html", 
     "default_icon":"icon.png" 
    }, 
    "background": { 
     "scripts": ["background.js"] 
    }, 
    "manifest_version":2, 
    "permissions": [ 
      "tabs", 
      "http://*.facebook.com/*", 
      "http://*.google.com/*", 
      "storage" 
    ] 
} 

popup.html 파일 :

<html> 
    <head> 
    <title>Test tabs</title> 
    </head> 
    <body> 
    <script type="text/javascript" src=/background.js"></script> 
    </body> 
</html> 

무슨 문제가있을 수 있습니까?

답변

2

코드는 background pages이어야합니다.

의 manifest.json 파일에 있습니다 :

"background" : {"scripts" : ["background_script.js"] } 

또는

당신이 배경 페이지 내부의 파일을 참조 할 때 절대 경로를 사용할 필요가
"background" : {"page" : "background_page.html" } 

:

<script type="text/javascript" src="/background.js"></script> 
+0

이 코드는 background.js에 있습니다. – shtkuh

+0

예외/오류가 발생합니까? 확장 프로그램을 실행 하시겠습니까? –

+0

확장 페이지에 예외가 없습니다. – shtkuh

0

콜백 함수가 다른 컨텍스트에서 실행되고 경고가 작동하지 않는다고 생각합니다. 백그라운드 페이지와 DevTools를 열고 console.log (tab.id)를 사용하여 탭 ID보기를 시도하십시오.

+0

"다른 컨텍스트"가 무엇인지 설명해 주실 수 있습니까? 콜백 함수가 할 수있는 몇 가지 제한이 있습니까? – shtkuh

+1

@shtkuh Chrome 확장 스크립트는 다음과 같은 3 가지 컨텍스트를 실행합니다. - 배경 스크립트 (확장자로 표시)
- 컨텐트 스크립트 (표시된 웹 페이지의 DOM을 읽고 수정할 수 있음)
- 삽입 스크립트
[link] (http://stackoverflow.com/questions/9915311/chrome-extension-code-vs-content-scripts-vs-injected-scripts) –

-1

내 해결책은 다음과 같습니다.
chrome.tabs.create({url: URL, selected: false}, function(tab) { alert(tab.id) })

경고가 제대로 작동하는지 확신 할 수 없습니까?

관련 문제