2011-08-21 4 views
2

Google 크롬 확장 팝업과 함께 jQuery를 사용하고 있습니다. 팝업 페이지는 jQuery의 'document.ready'이벤트를 사용하여 웹 서비스에 대한 요청을 트리거합니다. 문제는 응답이 수신 될 때까지 팝업이 렌더링되지 않으므로 응답이없는 것처럼 보입니다.Chrome 확장 팝업이 표시된 후 이벤트를 실행하는 방법은 무엇입니까?

<html> 
<head> 
    <script type="text/javascript" src="./plugin.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      plugin.init();    
      plugin.getData(); 
     });   
    </script> 
</head> 
<body>...</body> 
</html> 

내가 크롬 팝업을 렌더링 후 'GetData의()'를 트리거하는 데 사용할 수있는 이벤트가있다 : 다음 페이지의 개요입니다? 본문 내에서 div의 가시성 이벤트로 원숭이를 시도했지만, document.ready를 처리하는 것 이외에는 자동으로 이러한 이벤트를 트리거 할 수 없었습니다. 이는 동일한 동작으로 이어집니다.

답변

6

사용 setTimeout 이것은 내 자신의 연장선에서, 그리고 트릭을해야합니다.

1

아마 당신은 비동기 적으로 데이터를 가져 오기 위해 배경 페이지와 상호 작용할 수 :

plugin.init() 

chrome.extension.sendRequest({fetch: true}, function(response) { 
    plugin.handleData(response); 
}); 

배경 :

<html> 
<head> 
    <script type="text/javascript" src="./plugin.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      plugin.init();    
      setTimeout(plugin.getData); 
     });   
    </script> 
</head> 
<body>...</body> 
</html> 

나는 짓을했는지 : 지연없이

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) { 
    if (request.fetch){ 
    sendResponse(getData()); 
    } 
}); 
관련 문제