吴小邪
吴小邪
  • 发布:2017-11-01 14:18
  • 更新:5 天前
  • 阅读:1613

【报Bug】用webview加载网页,网页中使用了h5 pushState加载新的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'});

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-11-01 14:18 分享
已邀请:
第七十三天至

第七十三天至

优酷(https://m.youku.com)也是这样 ,请问你现在解决了吗?

第七十三天至

第七十三天至

我发现使用loading或者loaded执行的函数会带要跳转的url,但是运行时会发现并不是每一次都会执行loading或者loaded;同样的使用listenResourceLoading和overrideUrlLoading也能获取到url参数,但问题是listenResourceLoading和overrideUrlLoading并不会每次都生效

第七十三天至

第七十三天至

同样的代码运行起来结果往往是wobj.addEventListener( event, listener, capture )添加的监听有些执行,有些并没有执行

要回复问题请先登录注册