卡卡啦
卡卡啦
  • 发布:2016-02-02 17:08
  • 更新:2016-02-03 16:28
  • 阅读:3602

loadURL事件,监听加载实现不了

分类:HTML5+

1.在自定义事件实现loadURL事件,弹出等待加载弹窗,如图使用了setTimeout方法,但是我想实现在加载前弹出等待框,加载成功后等待框消失,尝试在里面监听webview事件,webview.addEventListener,但是在window.addEventListener里添加webview.addEventListener没反应,没有效果。而loadURL也没有回调函数,求大神指导怎么实现。

  1. 另外还有一个问题在mui.fire()中,plus.webview.getWebviewById()没效果,plus.webview.currentWebview().opener();才可以,这是为什么
  2. 最后一个问题就是h5+的sdk最新的日志上可支持ios端webview的transparent属性,但是我用了alpha版的hbuilder,还是不支持
2016-02-02 17:08 负责人:无 分享
已邀请:
deiphi

deiphi

var wvMain = plus.webview.create("http://www.qq.com/", "wvmain");  

wvMain.show();  

wvMain.addEventListener("loading", function(){  
    plus.nativeUI.showWaiting();  

    setTimeout(function(){  
        plus.nativeUI.closeWaiting();  
    }, 3000);  
});  

wvMain.addEventListener("loaded", function(){  
    plus.nativeUI.closeWaiting();  
}); 

第一个问题,可以这样做。

  • 卡卡啦 (作者)

    你没理解我什么意思,我是用自定义的方式穿url参数,在父页面监听自定义的事件实现loadURL事件,问题是在监听自定义事件里再监听加载loaded事件就没效果,就是在loadURL外面包一层监听loaded的事件就不行

    2016-02-02 17:31

DCloud_heavensoft

DCloud_heavensoft

  1. 不应该,做个最小测试例验证下。
  2. sdk是从社区单独下载的,不包括在HBuilder里。
DCloud_UNI_FXY

DCloud_UNI_FXY

贴出来完整代码。

你的nw这个webview不是当前页面的webview吧,如果是当前的webview,那么是不行的。必须在其他页面才可以。

  • 卡卡啦 (作者)

    我的nw就是当前webview啊,在子页面操作传url到当前页重载新页面,我想在重载url的时候有等待框,并且在重载成功后等待框消失

    2016-02-03 16:28

maq

maq

【支持ios端webview的transparent属性】?真的么?

  • 卡卡啦 (作者)

    h5+sdk最新日志上有写,但是hbuilder还不行

    2016-02-02 17:34

  • maq

    哪里看到的?可否给个链接?

    2016-02-02 17:37

  • maq

    回复 DCloud_IOS_XTY: 意思是离线打包不支持?为啥?是最新功能还没有发布是吗?

    2016-02-02 18:32

  • DCloud_IOS_XTY

    HB调试不支持,还未正式发版

    2016-02-02 18:36

  • 卡卡啦 (作者)

    回复 maq:离线打包支持的,HB调试还不行

    2016-02-03 14:14

  • maq

    回复 卡卡啦:嗯,谢谢你。应该是下载最新的 SDK 再离线打包就可以了。


    这个 transparent 挺有用,可以用来实现多 webview 组合情况下的 popover,否则 popover 基本没法用。但即便 iOS 支持 transparent,可低版本的 Android 不支持,仍然有些鸡肋,还是不敢用,唉~~

    2016-02-03 14:40

卡卡啦

卡卡啦 (作者)

我的nw就是当前webview啊,在子页面操作传url到当前页重载新页面,我想在重载url的时候有等待框,并且在重载成功后等待框消失

  • maq

    webview.addEventListener('loaded', function() {...}); 这个可以监听到页面加载完成的事件,但必须是在调用 loadURL() 那个 js 里进行监听,不能在被 reload 的那个页面里监听(因为整个页面都被 reload 了,里面原来的 js 自然也都失效了)。

    2016-02-03 16:49

  • 卡卡啦 (作者)

    回复 maq:对啊,我就是在调用loadurl那里调用loaded事件啊,就是没效果

    2016-02-03 17:05

  • maq

    额……其实我只能确定在创建 webview 之后能监听到 loaded 事件,至于 loadURL() 的时候是否能再次触发这个事件,我不能确定,做个试验应该不难,只是我现在没时间 :(

    2016-02-03 17:09

  • DCloud_UNI_FXY

    回复 maq:不要在当前webview里边监听事件,然后loadURL,这样事件是不可靠的。需要在其他页面创建该webview的时候,监听事件。保证事件句柄不会因为loadURL被移除掉

    2016-02-03 18:02

  • maq

    回复 DCloud_UNI_FXY:是这样的。我前面的回复说的也是这个意思。现在我不能确定的是另外一个问题:webview 的 loaded 事件在 loadURL() 之后是否能够再次触发?

    2016-02-03 18:19

  • 卡卡啦 (作者)

    回复 maq:可以的,做了一个小demo,测试可以

    2016-02-03 18:28

  • maq

    回复 卡卡啦: ^_^

    2016-02-03 18:38

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