2011-08-20 4 views
0

나는 'welcome.html'이라는 팝업을 가지고 있는데, 사용자가 텍스트를 선택하고 내 플러그인을 클릭하면 페이지 정보를 사용하고 환영 메시지로 다시 인쇄합니다. html. 예를 들어 웹 사이트 제목과 사용자가 선택한 텍스트 및 URL을 예로들 수 있습니다. 그러나 welcome.html에 어떻게 가치를 전달할 수 있습니까? 고맙습니다.Chrome 확장 프로그램 개발에서 값을 페이지로 전달하는 방법은 무엇인가요?

답변

1

나는 많은 데이터를 사용자가 쉽게 클립 보드에 복사 할 수 있도록 많은 데이터를 채취하므로이 작업은 my extension에서 많이 수행됩니다.

데이터가 훨씬 적어지기 때문에 훨씬 더 간단합니다. 팝업이로드되면 다음 함수를 호출하여 필요한 정보를 검색 할 수 있습니다.

function getData(callback) { 
    chrome.tabs.getSelected(null, function (tab) { 
     var data = { 
      selection: '', 
      title: tab.title, 
      url: tab.url 
     }; 
     /* 
     * We can't call content scripts on some pages and the process will get 
     * stuck if we try. 
     */ 
     if (tab.url.indexOf('chrome') === 0 || 
       tab.url.indexOf('https://chrome.google.com/webstore') === 0) { 
      callback(data); 
     } else { 
      chrome.tabs.sendRequest(tab.id, {}, function (response) { 
       data.selection = response.selection; 
       callback(data); 
      }); 
     } 
    }); 
} 

모든 데이터가 추출되면 콜백 함수를 전달해야합니다. 당신이 getData 기능을다시피

getData(function (data) { 
    console.log('Title: ' + data.title); 
    console.log('URL: ' + data.url); 
    console.log('Selected Text: ' + data.selection); 
    // Display the data instead 
}); 

선택한 탭에 요청을 보냅니다. 이 작업을 수행하려면 content script을 페이지에 삽입해야하므로 getData을 호출하기 전에 매니페스트가 올바르게 설정되었거나 injected it programmatically인지 확인하십시오. 그렇지 않으면 작동하지 않습니다. 삽입해야 할 스크립트는 다음과 유사해야합니다.

(function() { 
    chrome.extension.onRequest.addListener(function (request, sender, 
      sendResponse) { 
     sendResponse({ 
      selection: window.getSelection().toString() 
     }); 
    }); 
})(); 

이것은 현재 선택된 텍스트를 반환합니다. 한 가지 우려는이 데이터 검색은 팝업이 렌더링되는 동안 약간 일시 중지가 발생할 수 있지만 직접 테스트하고 실험해야하지만 solutions이 있어야합니다.

Chrome 확장 프로그램을 처음 사용하는 사용자에게 도움이 될만한 정보가 있으면 알려 주시기 바랍니다. 도움이 필요하시면 알려 주시기 바랍니다.

관련 문제