Как вызвать событие после отображения всплывающего окна с расширением Chrome? - PullRequest
2 голосов
/ 21 августа 2011

Я использую jQuery с всплывающим расширением Google Chrome.Всплывающая страница использует событие jQuery document.ready для запуска запроса к веб-службе.Проблема в том, что всплывающее окно не отображается, пока не получен ответ, из-за чего он кажется не отвечающим.Вот схема страницы:

<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 ()' после Chrome отображает всплывающее окно?Я пытался манипулировать событиями видимости div в теле, но я не смог вызвать эти события автоматически, кроме как обработкой document.ready, что приводит к тому же поведению.

Ответы [ 2 ]

6 голосов
/ 21 августа 2011

Используйте setTimeout без задержки:

<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>

Я сделал это в своем собственном расширении, и это должно сработать.

1 голос
/ 21 августа 2011

Возможно, вы могли бы взаимодействовать с фоновой страницей для асинхронной выборки данных:

plugin.init()

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

Фон:

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
  if (request.fetch){
    sendResponse(getData());
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...