quwei
quwei
  • 发布:2014-10-20 00:04
  • 更新:2014-10-20 16:46
  • 阅读:2340

打开新窗口在andriod下失效

分类:HTML5+

我按官方的例子,封装了一个打开新窗口的代码。每次在需要打开新窗口里直接写 onclick="openwebview('abc.html')" 或者用js调用。

请教:
1)这种思路有问题吗?
2)如果当前已经有一个webview,我用这个方法打开新窗口,那么以前的窗口是不是没有关闭还在后台?改怎么改进?
3)为什么我不管用 mui.openWindow 还是 plus.webview.open 还是 先 plus.webview.create再 plus.webview.show 这三个方法的任何一种, 在iphone下基本没问题,但是在andriod下间歇性失效。

我追踪代码,发现窗口实际已经打开了,在open以后立即显示所有webview会提示的确已经打开,但是就是不显示。
然后当前窗口的所有链接都失效。按返回键 1-2次后,当前窗口能恢复正常。但是再次点击打开新窗口事件还是显示不了。

但是偶尔又可以。

请教原因。

{{{
function openwebview(id) {
console.log('func openwebview: ' + id);
var wv = plus.webview.getWebviewById(id);
var ani = 'slide-in-right';
if(!ani) ani = 'slide-in-right';
if(wv) {
console.log('wv.close :' + id);
wv.close();
}
//var wx_current = plus.webview.currentWebview();
plus.webview.open(id, id, {height:'100%',top:'0px',left:'0px',width:'100%',zindex:999}, ani);
//wv.show(ani);
/*
mui.openWindow({
url:id,
id:id,
show:{aniShow:ani },
styles:{zindex:999}
});
*/
//console.log('webview.open id: ' + plus.webview.getWebviewById(id).id );
//wx_current.close();
}
}}}

2014-10-20 00:04 负责人:无 分享
已邀请:
DCloud_UNI_CHB

DCloud_UNI_CHB

1、不建议使用onclick,在mobile app上会有300毫秒延迟,建议使用mui封装的tap事件;
2、使用mui.openWindow方法,传递preload:true参数可保证若目标窗口已打开,则直接打开已存在的窗口,不会重复创建;例如:
{{{
mui.openWindow({
id:id,
url:id,
preload:true
});
}}}
3、你的代码中很多代码是不需要的,比如默认动画就是'slide-in-right',不需要传参;还有height、left同理;

若还有问题,可以将你的完整代码发我邮箱:hbcui1984@gmail.com

  • quwei (作者)

    那些多余的代码是在我按原始方法测试不行的时候加上的,我各种方法都试过了。 行,我按你说的再测试下看看效果。谢谢。


    2014-10-20 12:07

quwei

quwei (作者)

我改用 mui.openWindow 以后andriod下可以了。

再请教下,
如果我用 mui.openWindow 打开了一个新窗口,就窗口是不是我得手动关闭? 是在写 mui.openWindow({ 语句以后再写一句 关闭当前窗口的方法吗?mui里用什么方法?

DCloud_UNI_CHB

DCloud_UNI_CHB

返回如果使用的是mui封装的返回,则不用处理窗口逻辑,mui会自动处理,参考:http://dcloudio.github.io/mui/javascript/#closewindow

quwei

quwei (作者)

没有,我是在一个窗口中打开另外一个窗口。

比如:详细页面,需要发布评论,就open了一个新的注册 登录页面。中间可能要open好几次。

DCloud_UNI_CHB

DCloud_UNI_CHB

你的注册、登录界面总有关闭需求,比如登录成功,需要关闭登录界面,返回发布评论页面,则执行如下js代码自己关闭登录界面即可:
{{{
var current = plus.webview.currentWebview();
current.close();
}}}

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