2

문서는 여기에 끔찍한 보인다 http://code.google.com/chrome/extensions/messaging.html크롬 확장 sendMessage 첨부

내가 페이지에 텍스트 영역이있는 경우 단순히 pageIcon을 보여, 내 콘텐츠 스크립트를합니다. (jQuery를 사용하여)

내 content.js이 작업을 수행합니다 :

$('textarea').each(function() { 
    chrome.extension.sendMessage({greeting: "hello"}, function(response) { 
     console.log(response); 
    }); 
}); 

그런 다음 내 background.js이 있습니다 매우 간단해야

chrome.extension.onMessage.addListener(

    function(request, sender, sendResponse) { 
     chrome.pageAction.show(sender.tab.id); 
    } 
}); 

합니다. 텍스트 영역이 있으면 아이콘을 표시하십시오.

샘플 코드에서 모든 종류의 변형을 시도했지만 아무런 효과가 없습니다. 내가 얻은 것은 :

Port error: Could not establish connection. Receiving end does not exist.

콘솔에 있습니다.

내가 잘못 가고있는 아이디어가 있습니까?

+2

문서는 일반적으로 우수해야한다. 설명서를 제대로 읽지 못했습니다. ['chrome.extension.onmessage'] 이벤트 리스너 (http://code.google.com/chrome/extensions/extension.html#event-onMessage)는 하나의 매개 변수 만 수신합니다. 객체 'request','sender','sendResponse'를 포함하고 있습니다. (이후 크롬 20, ['onRequest'와'sendRequest'는'onMessage'와'sendMessage'로 대체되었습니다.] (http://stackoverflow.com/a/11412113). 이것은 아마도 오류의 원인이 아닙니다. onMessage 이벤트 리스너가 연결되어 있는지 확인하십시오 (즉, 오류가 발생하지 않았습니까)? –

+0

onMessage를 onRequest로 변경하고 다시 시도하십시오. 오류가 계속되면 백그라운드 스크립트의 콘솔 로그를 살펴보아야합니다. (Extensions -> Inspect Views : ***에서 스크립트가 있어야하고 jusc lick을 실행하고 콘솔로 이동하여 오류를 확인하십시오. message) –

답변

6

배경 스크립트에 여분의 중괄호가 있다고 생각합니다.

chrome.extension.onMessage.addListener(

    function(request, sender, sendResponse) { 
     chrome.pageAction.show(sender.tab.id); 
    } 
}); 

는 크롬 확장을위한

chrome.extension.onMessage.addListener(

    function(request, sender, sendResponse) { 
     chrome.pageAction.show(sender.tab.id); 
    } 
); 
+0

sendResponse (확장자에서)를 호출하여 내용을 보내지 만 호출되지 않습니다. 도움을 청하십시오. – pavan