详细问题描述
[内容]使用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
1 个回复
7***@qq.com - 一个大三创业狗,没事写写web app赚点零花钱
如果页面刷新了触发了load事件使用geturl()是可以得到正确地址的,如果页面只是局部刷新,类似于单页应用,那个geturl()只能得到初始的打开这个webview的URL。
优酷播放页面就是第二种局部刷新的,你可以使用location.href得到你想要的URL