解决uniapp使用web-view嵌套H5页面返回直接退出的问题

<template>
  <view>
    <web-view :src="src"></web-view>
  </view>
</template>
<script>
var wv; //计划创建的webview
export default {
  data() {
    return {
      src: "",
      canBack: false,
    };
  },
  onBackPress() {
    if (wv && this.canBack) {
      wv.back();
      return true;
    }
    return false;
  },
  onReady() {
    // #ifdef APP-PLUS

    var self = this;
    var currentWebview = this.$scope.$getAppWebview(); //此对象相当于html5plus里的plus.webview.currentWebview()。在uni-app里vue页面直接使用plus.webview.currentWebview()无效,非v3编译模式使用this.$mp.page.$getAppWebview()
    setTimeout(function () {
      wv = currentWebview.children()[0];
      wv.addEventListener(
        "progressChanged",
        function (e) {
          wv.canBack(function (e) {
            self.canBack = e.canBack;
          });
        },
        false
      );
    }, 500); //如果是页面初始化调用时,需要延时一下

    // #endif
  },
};
</script>
### 如何在 UniApp 中实现点击视频后全屏播放或预览 为了实现在 UniApp 应用中点击视频后能够进入全屏模式进行播放,可以采用 `createVideoContext` 方法来控制视频组件的行为。具体来说,在用户触发特定事件(如点击)时创建一个针对目标 `<video>` 组件上下文对象,并通过该对象调用请求全屏的方法。 对于不同平台上的兼容性处理: - **H5 和 小程序**:可以直接利用内置的 `requestFullScreen()` API 来切换至全屏状态[^4]。 ```javascript // JavaScript部分用于处理点击事件后的逻辑 methods: { playFullscreen(videoId) { const videoCtx = uni.createVideoContext(videoId); videoCtx.requestFullScreen(); // 监听退出全屏事件以便及时停止播放 document.addEventListener('fullscreenchange', () => { if (!document.fullscreenElement) { videoCtx.pause(); } }); } } ``` - **NVue 页面**:由于 NVue 对于某些 Web 特性的支持有限,因此推荐使用 WebView 嵌套 H5 的方式加载外部播放器以获得更好的体验和更稳定的性能表现[^2]。 另外需要注意的是,当涉及到多端适配时要考虑到各个环境下的差异,比如 iOS 设备可能需要额外指定方向参数确保横竖屏转换顺畅;而对于 Android,则应考虑权限管理等问题。 最后附上一段简单的模板代码片段供参考: ```html <!-- HTML结构 --> <template> <view class="container"> <!-- 视频区域 --> <video id="my-video" :src="videoSrc"></video> <!-- 自定义播放按钮 --> <button type="primary" @click="playFullscreen('my-video')">全屏观看</button> </view> </template> ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值