2013-11-21 4 views
0

내가 내 확장 background.js 스크립트에서 활성 탭 (페이지)의 HTML 코드에 접근 할 수 background.js액세스

manifest.json을

"background": { 
    "scripts": ["jquery.js","background.js"] 
}, 

background.js

chrome.webRequest.onBeforeRequest.addListener(
    function(info) { 
    return {redirectUrl: "http://www.mysite.com/script.php?" + 
         "data=" + encodeURIComponent($('#J_Data').text())}; 
    }, 
    { 
    urls: [ 
    "http://www.othersite.com/addItems.do*" 
    ], 
    types: ["script"] 
}, 
["blocking"]); 

그러나 background.js는 활성 페이지의 HTML 코드에 접근이 없다 "$ ('# J_Data를'). 텍스트()"정의를! background.js 및 jQuery를 사용하여 활성 페이지에 액세스 할 수있는 방법은 무엇입니까?

답변

1

jQuery를 백그라운드 스크립트의 컨텍스트에서 실행 중이며 페이지 자체에 대한 액세스 권한이 없습니다. chrome.tabs.executeScript 또는 content scripts을 사용하여 원하는 탭에 코드를 삽입 할 수 있습니다. 관심있는 링크가 있다면 pass them to the background script을 임시로 저장하고 탭에 스크립트를 삽입하면됩니다. onBeforeRequest 리스너 내에서 해당 인덱스를 포함 및 쿼리 할 데이터와 함께 tabIds/urls 인덱스.

+0

나는 chrome.tabs.executeScript를 시도했지만 executeScript가 끝나기 전에 redirectUrl return url을 시도했다. redirectUrl을 chrome.tabs.executeScript 콜백 함수에 넣으면 chrome은 redirectUrl을 사용하지 않습니다. 이제 콘텐츠 스크립트를 사용하고 redirectUrl을 사용하기 전에 데이터를 가져옵니다. 감사. @abraham – SPnova