var webviewdetail = null;
var waitui = null;
mui.plusReady(function(){
mui.init();
webviewdetail = plus.webview.currentWebview();
webviewdetail.onloading = loadingwait;
webviewdetail.onerror = loaderror;
//webviewdetail.onloaded = loaddone;
webviewdetail.addEventListener("loaded", function (e) {
alert('loaddone');
})
});
求解!
12 个回复
chender - 与人为善
在pusReady是在loaded之后,你注册监听的时候,loaded事件已经触发完了
DCloud_App_Array
先说下plusready事件:
plusready是说明当前Webview的5 API准备完成,这时候才能正确的调用5 API(如果plusready没有触发则无法正常调用)
mui的ready方法就是封装的plusready事件。
再Webview的onloading、onloaded事件:
onloading是在Webview窗口要加载新的html页面时触发(包括页面重定向也会触发)、onloaded是在Webview窗口加载html页面完成时触发
事件的触发是有个时机的问题,如果对应的事件已经发生再监听(onloading=function(){})则不会触发,为了避免这种情况的发生,应该在加载html前监听事件,如A页面打开B页面,在A页面中创建B页面的时候就进行监听,如下A页面中的JS:
地图 (作者)
loading 是可以正常触发,调用方法。
地图 (作者)
那应该挪到 plusready外面 注册码? 但是loading 是可以触发的。
地图 (作者)
其实中间调用了loadURL这个方法。应该会再次出发loaded吧?loading都可以触发。
chender
loaded这个事件是webview的,和window的load事件好像不太一样,估计只会执行一次
2015-07-15 12:04
地图 (作者)
哪有什么办法让这个loaded再次出发呀? 必须new 一个webview吗?
2015-07-15 12:16
chender
回复 地图:你为什么一定要让他触发loaded事件啊,直接通过js调用方法不是更方便吗
2015-07-15 12:55
地图 (作者)
是因为在load之前,调用了nativeUI.showWaitting(), 然后再loaded的时候,close这个waitting啊。
2015-07-15 15:07
地图 (作者)
试了放到plusready外,还是不行,不能触发
chender - 与人为善
你放外面都不能访问到currentWebview吧
地图 (作者)
调试 没报null的错。。。
chender
你必须在plusready后才能访问到当前的webview吧,但是plusready是在loaded之后,所以你加监听的时候肯定已经loaded完了,至于你说的后来又调用loadURL这个方法,loadUrl应该只会触发window的loaded事件,不会触发webview的loaded事件
2015-07-15 12:54
KingMario
mui.init不是应该放在mui.plusReady外面的吗?
12312312
你这个根本就没办法触发,放哪都一样。
云海帆 - 咨询问题请+Q1395641578
是不是可以用mui.ready() 替代?
deiphi
我试过这样也不行:
onloaded里面都没有执行。