deiphi
deiphi
  • 发布:2015-07-18 10:49
  • 更新:2015-07-18 19:24
  • 阅读:2431

为什么webview.onloaded不触发?

分类:Native.js
        var newWebview = plus.webview.create(url, id);  
        newWebview.onloaded = function(){  
            console.log("loaded?");  
            newWebview.show();  
        }

onloaded里面都没有执行。为啥呢,要怎么写?

2015-07-18 10:49 负责人:无 分享
已邀请:
chender

chender - 与人为善

要使用addEventListener绑定

  • deiphi (作者)

    试过了,都一样的。。

    2015-07-18 11:31

chender

chender - 与人为善

webview 创建出来后先hide,然后在你的子页面里面,界面完全展示好之后,再currentWebView.show()

wuweixing

wuweixing

可使用console.log()输出内容到控制台,但是可能只能输出plusready之后的调试内容

  • deiphi (作者)

    里面的代码都是放plusready里面的。

    2015-07-18 11:02

chender

chender - 与人为善

xxx.addEventListener("loaded",function(){
console.log("不行找我");
})

deiphi

deiphi (作者)

谢谢@chender,确实可以输出了。

但另一个问题是,由于我在打开的页面用了多个mui.ajax,这个时候其实ajax还没有返回数据,但是loaded事件已经触发了,dom还没有渲染完成页面就被show出来了,导致页面有错乱感,有没有办法解决呢。

chender

chender - 与人为善

子webview打开后先hide,然后在界面元素加载完毕后再plus.webview.currentWebview().show();
中间这点间隔时间可以转雪花儿

deiphi

deiphi (作者)

@chender 因为我的子webview里面调用了多个mui.ajax,我无法判断页面什么时候才真正加载完。

chender

chender - 与人为善

这个就更简单了

  var ajaxCount=0;  

  ajaxCount++;  
  mui.ajax1(....,function(){  
   ajaxCount--;  
   if(ajaxCount==0){  
    console.log("所有ajax请求都ok了");  
   }  
 });  

  ajaxCount++;  
  mui.ajax2(....,function(){  
   ajaxCount--;  
   if(ajaxCount==0){  
    console.log("所有ajax请求都ok了");  
   }  
 });  

  ajaxCount++;  
  mui.ajax3(....,function(){  
   ajaxCount--;  
   if(ajaxCount==0){  
    console.log("所有ajax请求都ok了");  
   }  
 });
deiphi

deiphi (作者)

@chender 谢谢,我目前也是用了类似的写法,不过就是稍微不那么优雅。。

  • chender

    恩,要不然就是把多个ajax请求串起来,但是效益上又有点问题,将就吧,估计是没啥优雅的方案了

    2015-07-18 19:52

该问题目前已经被锁定, 无法添加新回复