2017-11-17 4 views
0

몇 가지 접근 방식을 찾았지만 구식 인 것처럼 보이거나 단순히 나를 위해 어떤 이유로 작동하지 않습니다. 아마 터널 비전 : 첫 번째크롬 확장에 대한 현재 (활성) 탭의 URL 가져 오기

우선 일 : 나는에 올바른 사용 권한이

manifest.json, 내 생각 :

"permissions": [ 
    "tabs", 
    "activeTab" 
] 

내가 제대로 인식이 간단한 스크립트, background.jscontent.js (즉,이 오류는 여기에있을 수 없습니다). 내 background.js에서

내가 여러 가지 방법 시도 : 다음

chrome.browserAction.onClicked.addListener(buttonClicked); 

var sharedUrl; 

function buttonClicked(tab) { 

chrome.tabs.getCurrent(function(tab) { 
    // please read further, this was my last resort, I tried other stuff as well 
    sharedUrl = console.log(window.location.href); 
}); 

let msg = { 
    txt: "Hello", 
    url: sharedUrl 
} 
chrome.tabs.sendMessage(tab.id, msg); 
} 
내가 getCurrent()와 그것을 시도

tab.url을,하지만 작동하지 않았다 (어느 쪽도 tab[0].url

으로 나뿐만 아니라 getSelected()과 또한 그것을 시도하지

chrome.tabs.query({active: true, currentWindow: true}, function(arrayOfTabs) { 
    var activeTab = arrayOfTabs[0]; 
}); 

및 내 content.js은 단순히 여기에 있습니다 :

chrome.runtime.onMessage.addListener(gotMessage); 

function gotMessage(message, sender, sendResponse) { 
    console.log(message.txt); 
    console.log(message.url); 
} 

"Hello"가 표시되지만 찾고자하는 URL은 표시되지 않습니다.

편집 : 내 확장 프로그램에서 버튼을 누른 후에 URL을 검색하고 싶을 수도 있습니다.

의견 및 도움에 감사드립니다.

답변

0

문서를 기반으로 탭 컨텍스트에 있지 않은 동안 탭 개체를 잡을 수 없습니다. 탭 컨텍스트에는 내용 스크립트 만 포함됩니다. 따라서 백엔드 페이지에서 호출하기 때문에 탭에 액세스 할 수 없습니다. 확장 프로그램이 탭을 생성 한 경우에만이 작업을 수행 할 수 있습니다.

Gets the tab that this script call is being made from. May be undefined if called from a non-tab context (for example: a background page or popup view).

그래서 가능한 유일한 방법은 확장 데이터 흐름을 변경하는 것입니다.

+0

'tabs.getCurrent에 대한 응답 오류 : TypeError : 'undefined의 URL'속성을 읽을 수 없습니다. ' – DasSaffe

+0

파일에서 코드를 사용하고 있습니까? –

+0

background.js, 왜냐하면 button.Click 후 content.js로 보내야합니다. – DasSaffe

관련 문제