0

나는 Tumblr의 외모를 변경하는 BeautifyTumblr이라는 부가 기능의 제작자입니다. Chrome 확장 프로그램이 업데이트되면 자동으로 감지하여 사용자에게 변경 사항을 표시하고 싶습니다. chrome.runtime.onInstalled.addListener 후크가있는 이벤트 페이지를 사용하여 업데이트가 발생했을 때이를 감지하고 확장 프로그램의 텍스트 파일에서 변경 사항을 검색합니다.이 모든 것이 제대로 작동하고 콘텐츠로 전달하려고 할 때 스크립트를 chrome.tabs.sendmessage를 통해 작동 시키면 아무 일도 일어나지 않으며 오류가 발생하지 않습니다. 나는 혼란 스럽다.크롬 : 런타임시 메시지 콘텐츠 스크립트 설치. 설치됨

도움이 될 것입니다.

이벤트 페이지 : 콘텐츠 스크립트에

chrome.runtime.onInstalled.addListener(function (details) { 
    "use strict"; 
    if (details.reason === "install") { 

    } else if (details.reason === "update") { 
     var thisVersion = chrome.runtime.getManifest().version, xmlDom, xmlhttp; 
     xmlDom = null; 
     xmlhttp = new XMLHttpRequest(); 
     xmlhttp.open("GET", chrome.extension.getURL("changelog.txt"), false); 
     xmlhttp.send(null); 
     xmlDom = xmlhttp.responseText; 
     chrome.tabs.query({'url' : 'http://www.tumblr.com/*'}, function (tabs) { 
      if (tabs.length > 0) { 
       var mTab = tabs[0].id; 
       chrome.tabs.update(mTab, {active: true}); 
       setTimeout(chrome.tabs.sendMessage(mTab, {beautifyTumblrUpdate: xmlDom}), 500); 
      } else { 
       chrome.tabs.create({'url' : 'http://www.tumblr.com/dashboard'}, function (tab) { 
        setTimeout(chrome.tabs.sendMessage(tab.id, {beautifyTumblrUpdate: xmlDom}), 500); 
       }); 
      } 
     }); 
    } 
}); 

관련 코드 :

chrome.runtime.onMessage.addListener(
    function (request, sender, sendResponse) { 
     "use strict"; 
     window.alert('test'); 
     if (request.beautifyTumblrUpdate) { 
      window.alert(request.beautifyTumblrUpdate); 
     } else if (request.beautifyTumblrInstall) { 
      window.alert(request.beautifyTumblrInstall); 
     } 
    } 
); 

답변

0

나는 또한 같은 일을보고하고있다. 나는 100 % 확신하지는 않지만 크롬이 배경 페이지와 "오래된"콘텐츠 스크립트 사이의 연결을 차단하기 때문에 확장 프로그램이 업데이트 될 때이 문제가 발생한다고 생각합니다. 더 많은 정보는이 버그 여기에있다 : https://code.google.com/p/chromium/issues/detail?id=168263

0

간단한 배경에서 다음 코드를 사용

chrome.runtime.onInstalled.addListener(function(details){ 
if(details.reason == "install"){ 
chrome.tabs.create({ url: chrome.extension.getURL('welcome.html')}); 
} 

}); 
관련 문제