0
현재 내 배경과 내 컨텐츠 스크립트와의 통신에 문제가 있습니다. 문제는 통신 할 수 있지만 비동기식 인 것 같습니다.백그라운드와 내용 스크립트간에 메시지를 동기화하는 방법은 무엇입니까?
내 코드를 보여 드리겠습니다.
yourToolbar.js
chrome.extension.sendRequest({getStatut : "none"}, function(response)
{
console.log('yourToolbar : ' + response.statut);
localStorage['activated'] = response.statut;
});
if (localStorage['activated'] == "show")
{
// injection
}
background.js
chrome.extension.onRequest.addListener(function(request, sender, sendResponse)
{
if(request.getStatut)
{
console.log('Background : ' + localStorage['activated']);
sendResponse({statut : localStorage['activated']});
}
else if(request.modifyToolbar)
{
if (request.modifyToolbar == "hideToolbar")
{
localStorage['activated'] = "hide";
}
}
});
진짜 문제는 내가 도구 모음 만 사라지는 하나 더 새로 고친 후 도구 모음을 숨길 때. 그래서 의사 소통이 최신 상태가 아닌 것 같습니다. 콘솔에 "정품 인증"값을 표시하면 좋은 가치를 보여 주지만, yourtoolbar.js의 조건은 "정품 인증"이전 값을 테스트합니다
누군가가 아이디어를 가지고 있습니까?
편집 : 하나 이상은 ... 난 그냥 조건 전에 경고를 추가하는 경우가 완벽하게 작동한다는 것입니다, 생각
alert(ocalStorage['activated']);
if (ocalStorage['activated']== "show")
{
확인 감사합니다 :
그래서 당신의 toolbar.js처럼 보일 것입니다! 그래서 더 이상 해결책이 없습니까? 스레드와 같이 일종의 wait_cond를 만들 수 없습니까? – Sindar
@Sindar 상자에서 꺼내지 마십시오. 콜백을 사용하는 것은 그렇게 나쁜 것은 아니며 프로그램 워크 플로를 변경해야합니다. – serg