x***@outlook.com
x***@outlook.com
  • 发布:2020-06-06 17:27
  • 更新:2020-07-10 21:12
  • 阅读:867

【报Bug】webview 新窗口打开video页面,再从video页面返回导致 webview中的input 组件软键盘无法呼出

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: windows 10

HBuilderX类型: 正式

HBuilderX版本号: 2.7.9

手机系统: Android

手机系统版本号: Android 10

手机厂商: 华为

手机机型: Mate 30 Pro 5G

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

App下载地址或H5⽹址: https://github.com/xiaomaokeke/uniapp-webview

示例代码:

index 页面:

<!-- #ifdef APP-PLUS -->  
        <div class="statusBar" :style="{height:statusBarHeight+'wx',width:windowWidth+'wx',backgroundColor:'#ff706f'}"></div>  
        <!-- #endif -->  
        <web-view :src="weburl" :style="{height:(windowHeight-statusBarHeight)+'wx',width:windowWidth+'wx','marginTop':statusBarHeight+'wx'}"  
         @onPostMessage="handlePostMessage" ref="webview" />  
        <div class="refresh" @tap="refresh">  
            <text class="txt">刷新</text>  
        </div>

video 页面

<view>  
        <video src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4" controls></video>  
    </view>

操作步骤:

1.在 index 页面(使用了webview 组件,以下简称index页面)中,点击 uni-Video 组件播放器4 按钮,打开带有 video 组件的页面
2.从 video 页面,点击顶部返回按钮,返回到 index 页面
3.点击 index 页面 底部输入框,无法弹出软键盘
4.在没有打开带有video组件页面时,index 页面的webview 中的网页表单元素 input聚焦是可以呼出软键盘

预期结果:

video 页面返回后,可以呼出软键盘

实际结果:

从 video 页面返回 index 页面,index 页面的 webview 中的表单元素 input 无法唤起软键盘

bug描述:

webview中有input 表单元素和 打开带有 video 组件的新页面(uni-page),从video 页面返回 webview 窗口时,webview中的input 元素聚焦无法呼出软键盘。

2020-06-06 17:27 负责人:DCloud_Android_ST 分享
已邀请:
DCMarvel

DCMarvel

我只 页面titleNView中的input碰到过无法唤起键盘的问题,页面show 的时候先把input disabled 禁用,然后在启用,在设置获取焦点,要不然也可以input手动绑定 点击或touch 事件,用plus.key.showSoftKeybord 强制显示键盘

  • x***@outlook.com (作者)

    嗯嗯,谢谢您的帮助,我试试您说的 plus.key.showSoftKeybord 方法看看

    2020-06-08 19:35

  • x***@outlook.com (作者)

    试了您的方法,弹起是弹起了,但是键盘的高度马上会0,直接收起键盘了,而且如果把这个事件放在 onLoad 的调用时,还会报错


    [JS Framework] Failed to find taskCenter (2).  
    TypeError: plus.weexBridge.exec is not a function. (In 'plus.weexBridge.exec(T.stringify(n),"pdr:"+T.stringify([e,t,!0]))', 'plus.weexBridge.exec' is null)

    这下我真的怀疑是Bug了

    2020-06-08 20:00

  • DCMarvel

    回复 x***@outlook.com: 用定时器包裹一下试试

    2020-06-09 08:43

  • x***@outlook.com (作者)

    回复 DCMarvel:

    加了也没啥效果呢,也是弹出来不到1秒就收回去了


    },  
    onShow() {
    uni.onKeyboardHeightChange((event) => {
    console.log(`键盘弹起了`, event.height)

    })
    setTimeout(() => {
    uni.$on('showKeyBord', (res) => {
    console.log('强制显示键盘', res);
    // #ifdef APP-PLUS
    plus.key.showSoftKeybord();
    // #endif
    })
    }, 500);
    },

    2020-06-09 11:10

x***@outlook.com

x***@outlook.com (作者)

一个月悄悄的过去了,还是没人回复

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