дождитесь окончания загрузки Google Планета Земля перед выполнением следующей команды в matlab - PullRequest
1 голос
/ 09 июня 2011

Я работаю над передачей данных моделирования Matlab в плагин Google Планета Земля через COM.

Моя проблема в том, что команда, которая должна быть вызвана после завершения загрузки Google Планета Земля, вызывается до этого.Это, конечно, приводит к ошибке.

Я мог бы использовать команду pause, чтобы приостановить код, ожидающий загрузки Google Планета Земля.Но это решение не столь эффективно, так как я не знаю точно, насколько быстро или медленно Google Earth будет загружаться на разные машины.

Я также пытался использовать свойства объекта COM.Это было близко, но без сигары.Код выглядит так:

waitfor(h.Document.parentWindow.document,'readyState','complete')

или также:

while strcmp(h.Document.parentWindow.document.readyState,'complete')== 0
    pause(1);

end  

Есть ли какие-либо свойства объекта, которые можно было бы использовать?Спасибо!

1 Ответ

1 голос
/ 10 июня 2011

Нашел решение!

Плагин Google Планета Земля вызовет метод "initCallback" после завершения загрузки.

Добавляя строку в метод "initCallback", я меняю заголовокмоего html-документа с другим именем, которое указывает, что плагин загружен.

function initCallback(pluginInstance) {
      ge = pluginInstance;
      ge.getWindow().setVisibility(true);

      // tell the application the plugin is ready
      //(window.external.JSInitSuccessCallback_(pluginInstance);
      document.title = "Google Earth Plugin - Ready";

      // prevent mouse navigation in the plugin
      ge.getOptions().setMouseNavigationEnabled(false);
    }

В конце MATLAB я просто добавил цикл while, сравнивая заголовок html-документа, приостанавливая выполнение до тех пор, пока плагин не будетЗакончилась загрузка.

while strcmp(h.Document.title,'Google Earth Plugin - Ready')~=1
    pause(0.01)
end

Может быть, есть и более элегантное решение, рад услышать ваши отзывы

...