2017-02-13 4 views
0

AFAIK, addEventListener('loadstop', ...), один из API InAppBrowser, не работает с iframe.Как сделать кордону inappbrowser ждать до загрузки iframe

Мне нужен мой скрипт, который выполняется executeScript Подождите, пока не будет загружен iframe. Я согласен с тем, что термин «загружен» является неоднозначным, поэтому его можно рассматривать как событие onload элемента iframe. Но я не знаю, как зарегистрировать обработчик событий (внутри executeScript) и вернуть возвращаемое значение из него. Потому что executeScript передает значение последнего оператора в свой обратный вызов, я думаю, что нет способа передать его за пределы.

ref.executeScript({code:String.raw` 
    document.iframe.addEventListener("load", function(){ 
     //How can I pass this outside executeScript? 
     document.iframe.contentDocument.innerHTML 
    }) 
`}) 

Тогда что такое правильный способ ждать, пока IFrame не загружен

ответ

0

Вы можете сделать это "опрос" для загруженного значения:

Once:

ref.executeScript({code:String.raw` 
    window.iframeContent = null; 
    document.iframe.addEventListener("load", function(){ 
     window.iframeContent = document.iframe.contentDocument.innerHTML; 
    }) 
`}) 

Тогда Неоднократно вызывайте следующий код выполнения, пока не получите значение (используя setInterval или подобное):

ref.executeScript({code:String.raw` 
    return window.iframeContent; 
`}) 
Смежные вопросы