如何使cordova inappbrowser等到iframe加载

时间:2017-02-13 06:09:27

标签: javascript cordova cordova-plugins inappbrowser

AFAIK,addEventListener('loadstop', ...),InAppBrowser API之一,不适用于iframe。

我需要我的脚本由executeScript执行,等到iframe加载完毕。我同意术语“已加载”#39;是不确定的,所以可以将它视为iframe元素的onload事件。但是我不知道如何注册事件处理程序(在executeScript中)并从中检索返回值。因为executeScript将last语句的值传递给它的回调,我认为没有办法将它传递到外部。

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

然后等待iframe加载的正确方法是什么

1 个答案:

答案 0 :(得分:0)

你可以通过" polling"对于加载的值:

一次:

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

然后重复调用以下executeScript,直到得到一个值(使用setInterval或类似):

ref.executeScript({code:String.raw`
   return window.iframeContent;
`})