2013-06-26 4 views
0

Google 검색에서 '링크 : URL'Google 검색을 통해 현재 활성화 된 사이트로 연결되는 사이트를 확인하는 Chrome 확장 프로그램을 구축하려고합니다. 탭. 하지만 내 코드가 탭의 URL을 변수에 제대로 저장하지 못합니다. 나는 stackoverflow에 비슷한 질문 (및 그들의 답변)을 발견하고 js가 비동기라는 사실과 관련이 있을지 모르지만 작동하도록 만들지는 못했다. 힌트는 대단히 감사하겠습니다. 감사! 여기Chrome 탭에서 URL을 저장하는 중 어려움 (Chrome 확장자 용)

// this is the part that doesn't work 

chrome.tabs.query({'active': true}, function (tabs) { 
    var query = tabs[0].url; 
    }); 

// this is the part that works just fine 

chrome.browserAction.onClicked.addListener(function(activeTab) 
{ 

    var stemURL = "http://www.google.com/#q=link:"; 
    chrome.tabs.create({ url: (stemURL + query) }); 
}); 

내가 잘해야 매니페스트 권한을 설정하는 방법은

"permissions": [ 
    "tabs", "http://*/*", "https://*/*" 
    ], 
+0

확장 프로그램에 대한 Google의 검색 결과에 문제가있을 수 있습니다. 그것은 "link :"에 콜론 다음에 공백을 넣었는지 여부에 따라 다른 결과를 제공합니다. ([출처] (http://productforums.google.com/forum/#!topic/websearch/Y-cqCyEBp8Y)) –

답변

0

당신이 당신의 "쿼리"변수를 선언 할 때, 그것은 단지 크롬에서 콜백 함수 내에서 범위를 가지고 있기 때문이다 .tabs.query.

var query; 
chrome.tabs.query({'active': true}, function (tabs) { 
    query = tabs[0].url; 
    }); 
chrome.browserAction.onClicked.addListener(function(activeTab) 
{ 
    var stemURL = "http://www.google.com/#q=link:"; 
    chrome.tabs.create({ url: (stemURL + query) }); 
}); 

을 ... 또는 당신은 chrome.browserAction.onClick 당신과 횡령에 전달하는 당신의 activeTab 변수를 사용할 수 있습니다 : 지금, 당신은 전체 스크립트 내에서 그것을 범위를 제공하는 스크립트의 상단에 변수를 선언 할 수 사용자의 확장 기능 버튼을 클릭했을 때 사용자가보고 있던 탭의 검색 결과를 열 수 있도록 활성화 탭의 URL을 입력하십시오. 코드의 첫 번째 부분을 잘라내는 이점도 있습니다 :

chrome.browserAction.onClicked.addListener(function(activeTab) 
{ 
    var stemURL = "http://www.google.com/#q=link:"; 
    chrome.tabs.create({ url: (stemURL + activeTab.url) }); 
}); 

후자의 접근 방식을 권합니다. 더 빠르고, 깨끗하며, 신뢰할 수 있습니다. 행운을 빕니다!

+0

이제는 왜 작동하지 않았는지 이해합니다. 많은 감사드립니다. – user2517854

관련 문제