吴小邪
吴小邪
  • 发布:2017-10-31 15:30
  • 更新:2018-12-23 17:21
  • 阅读:2900

【报Bug】使用webview加载网页,html网页中使用了js ajax刷新了URL,webview.getUrl()方法无法获得刷新后的url

分类:5+ SDK

详细问题描述
[内容]使用webview加载网页,html网页中使用了js ajax刷新了URL,webview.getUrl()方法无法获得刷新后的url。具体是html5+的history.pushState方法,操作浏览器历史,并且用了ajax的异步加载页面方法,但是网页没有真正的刷新,是的webview.getUrl()方法,获取的地址还是加载页面前的url。目前已知的页面有爱奇艺移动版,芒果TV移动版。

重现步骤
[步骤]使用webview open页面(http://m.iqiyi.com/v_19rrkwkj54.html#30-26-15-7),使用listener loaded监听,再次点击下方的其它集,监听到了地址变化,但是getUrl方法获取的地址还是第一次打开的地址。
[结果]webview.getUrl()方法获取的地址还是第一次打开的地址,
[期望]获取到加载后的当前url地址

运行环境
[系统版本]win10
[浏览器版本]手机真机调试
[IDE版本]HBuilder 8.8.0.201706142254
[mui版本]Mui v3.7.0

附件
[代码片段]
var ws=null,embed=null,url=null,embIqiyiMain=null;
function plusReady(){
plus.webview.currentWebview().setStyle({scrollIndicator:'none'});
// Android处理返回键
ws=plus.webview.currentWebview();

embIqiyiMain = plus.webview.create('http://m.iqiyi.com/v_19rrkwkj54.html#30-26-15-7', 'embIqiyiMain', {top:'64px',bottom:'0px'});  

embIqiyiMain.addEventListener('loaded', function(e){  
    //url = location.href;  
    console.log("loaded event,current url:"+url);  
}, false);  
ws.append(embIqiyiMain);  

}
if(window.plus){
plusReady();
}else{
document.addEventListener('plusready',plusReady,false);
}

[安装包]

联系方式
[QQ]744922762
[电话]13331022201

2017-10-31 15:30 负责人:无 分享
已邀请:
7***@qq.com

7***@qq.com - 一个大三创业狗,没事写写web app赚点零花钱

如果页面刷新了触发了load事件使用geturl()是可以得到正确地址的,如果页面只是局部刷新,类似于单页应用,那个geturl()只能得到初始的打开这个webview的URL。
优酷播放页面就是第二种局部刷新的,你可以使用location.href得到你想要的URL

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