[内容]使用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'});
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);
}
5 个回复
第七十三天至
优酷(https://m.youku.com)也是这样 ,请问你现在解决了吗?
第七十三天至
我发现使用loading或者loaded执行的函数会带要跳转的url,但是运行时会发现并不是每一次都会执行loading或者loaded;同样的使用listenResourceLoading和overrideUrlLoading也能获取到url参数,但问题是listenResourceLoading和overrideUrlLoading并不会每次都生效
第七十三天至
同样的代码运行起来结果往往是wobj.addEventListener( event, listener, capture )添加的监听有些执行,有些并没有执行
第七十三天至
已解决
9***@qq.com
请问如何解决的啊大神
2019-12-12 18:04
第七十三天至
回复 9***@qq.com: 第一种方法使用location;第二种使用listenResourceLoading监听包含有src的资源
2019-12-13 17:34
3***@qq.com
请问如何使用location,mui不是不能直接调用location吗?在document内location.href确实是最新的url,你们知道mui中webview是怎样得到url的,如何更新url的?
2020-06-10 21:22
第七十三天至
回复 3***@qq.com: mui不能使用5+api吗?
2020-06-11 15:58
第七十三天至