触摸播放视频,并用iframe实现播放外站视频

效果:

在这里插入图片描述

html:

        <div
                :style="{ height: homedivh }"
                class="rightOne_content_div_div"
                @mouseenter="divSeenter(i)"
                @mouseleave="divLeave(i)"
                @click="ItemClick(i)"
              >
                <!-- isUser是否是用户上传 -->
                <div
                  v-if="i.isUser"
                  style="
                    width: 20px;
                    position: absolute;
                    height: 20px;
                    right: 1%;
                    top: 2%;
                  "
                >
                  <svg
                    t="1715653701623"
                    class="icon"
                    viewBox="0 0 1024 1024"
                    version="1.1"
                    xmlns="http://www.w3.org/2000/svg"
                    p-id="8731"
                    width="100%"
                    height="100%"
                  >
                    <path
                      d="M512 981.333333C252.8 981.333333 42.666667 771.2 42.666667 512S252.8 42.666667 512 42.666667s469.333333 210.133333 469.333333 469.333333-210.133333 469.333333-469.333333 469.333333z m36.394667-283.093333l80.810666 48.085333c19.968 11.904 34.602667 2.688 32.426667-20.736l-9.130667-98.048c-2.218667-23.509333 8.96-56.277333 24.96-73.386666l61.610667-66.005334c16.128-17.322667 10.410667-34.986667-12.373333-39.850666l-88.064-18.858667c-23.04-4.949333-50.176-25.941333-61.098667-47.018667l-45.738667-88.234666c-10.965333-21.205333-28.672-21.077333-39.594666 0l-45.738667 88.234666c-10.965333 21.162667-38.314667 42.112-61.098667 47.018667l-88.064 18.858667c-23.04 4.949333-28.373333 22.698667-12.373333 39.850666l61.610667 66.005334c16.128 17.28 27.136 49.962667 24.96 73.386666l-9.130667 98.048c-2.218667 23.509333 12.330667 32.725333 32.426667 20.736l80.810666-48.085333c19.968-11.904 52.693333-11.946667 72.789334 0z"
                      p-id="8732"
                      fill="#FFA53D"
                    ></path>
                  </svg>
                </div>
                <img
                  v-show="!i.showImage"
                  class="rightOne_content_div_img"
                  :src="i.cover"
                  alt=""
                />
                <div class="rightOne_content_div_img_div">
                  <CrossSiteVideo
                    class="rightOne_content_div_img"
                    v-if="i.showImage"
                    :src="zfgvideo"
                    :controls="false"
                    @click="ItemClick(i)"
                  />
                </div>

                <div class="rightOne_content_div_img">
                  <div class="rightOne_content_div_time">
                    <!-- {{ i.duration | formatTime }} -->
                  </div>
                </div>
              </div>

js:

    // 首页鼠标移入
    divSeenter(i) {
      console.log("🚀 ~ divSeenter ~ i:", i);
      this.zfgvideo = `${i.videoUrl}`;
      i.showImage = true;
      console.log("🚀 ~ divSeenter ~  this.zfgvideo:", this.zfgvideo);
      this.$forceUpdate();
    },
    divLeave(i) {
      i.showImage = false;
      this.zfgvideo = "";
      this.$forceUpdate();
    },

组件CrossSiteVideo:

<template>
  <iframe @load="syncAttrs" ref="vref" frameborder="0" src="/video.html"></iframe>
</template>

<script setup name="CrossSiteVideo">
import Vue, { reactive, getCurrentInstance, onBeforeUnmount, ref, watch, onMounted, defineEmits, defineProps } from "vue";

const vref = ref();

const props = defineProps(['src','controls']);
const emits = defineEmits(['click']);
const events = {
  click: (...arg) => emits('click', ...arg),
}

const syncEvents = (isDestroy) => {
  const win = vref?.value?.contentWindow;
  if (typeof win?.updateVideoEvents === 'function') {
    win.updateVideoEvents(events,isDestroy)
  }
}
const syncAttrs = () => {
  const win = vref?.value?.contentWindow;
  if (typeof win?.updateVideoAttributes === 'function') {
    syncEvents();
    win.updateVideoAttributes(props)
  }
}

// onMounted(syncAttrs);
watch(props, syncAttrs);
onBeforeUnmount(() => {
  syncEvents(true);
});

</script>

<style scoped lang="less">
iframe {
  -ms-overflow-style: none;
  /* IE和Edge */
  scrollbar-width: none;
  /* Firefox */
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/624615.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

NodeJS编写后端接口

技术栈 1.express&#xff1a;Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建 各种 Web 应用&#xff0c;和丰富的 HTTP 工具&#xff0c;使用 Express 可以快速地搭建一个完整功能的网站。 2.mysql&#xff1a;用于操作MySQL数据库 3.bod…

HarmonyOS应用模型Stage基本介绍

文章目录 <font colorcoral> HarmonyOS应用模型概况<font colorcoral> Stage模型基本概念<font colorcoral> Stage模型UIAbiliry的生命周期<font colorcoral> Stage模型的配置文件<font colorcoral> 写在后面的话<font colorcoral>Referen…

Grafana(CVE-2021-43798)、Apache Druid 代码执行漏洞

文章目录 一、Grafana 8.x 插件模块目录穿越漏洞&#xff08;CVE-2021-43798&#xff09;二、Apache Druid 代码执行漏洞&#xff08;CVE-2021-25646&#xff09; 一、Grafana 8.x 插件模块目录穿越漏洞&#xff08;CVE-2021-43798&#xff09; Grafana是一个系统监测工具。 利…

Spring的核心概念

目录 1、控制反转&#xff08;IoC&#xff09; 什么是控制反转 IoC与IoC容器的关系 Spring框架的控制反转 2、Bean 注解&#xff1a;​​​ 3、DI 4、总结 1、控制反转&#xff08;IoC&#xff09; 什么是控制反转 IoC&#xff08;Inversion of Control&#xff0c;控…

01 Triton backend

1 整体架构 三部分组成&#xff1a; Triton backend tensorRT_backend、onnx_backend、tfs_backend、torch_backend **Triton model ** 不同的模型 **Triton model instance ** 模型实例 ![P2}5X%2ULV(2OAC$_OKOP.png 2 设计思路 需要实现七个接口&#xff1a; TRITON…

给定两点所能得到的数学关系

给定两点所能得到的数学关系 正文 正文 这里介绍一个基础问题&#xff0c;如果给定平面上的两个点的坐标&#xff0c;那么它们之间能够得到什么数学关系呢&#xff1f; ω arctan ⁡ y 1 − y 0 x 1 − x 0 x 1 − x 0 d cos ⁡ ω y 1 − y 0 d cos ⁡ ω d ( x 1 − x…

【 PowerJob 的使用 -分布式调度】

PowerJob 的使用 最近项目中使用了PowerJob做任务调度模块&#xff0c;感觉这个框架真香&#xff0c;今天我们就来深入了解一下新一代的定时任务框架——PowerJob&#xff01; 简介 PowerJob是基于java开发的企业级的分布式任务调度平台&#xff0c;与xxl-job一样&#xff0…

内联函数+auto关键字(C++11)+指针空指针nullptr(C++11)

内联函数auto关键字&#xff08;C11&#xff09;指针空指针nullptr&#xff08;C11&#xff09;详解 内联函数概念特性 auto关键字&#xff08;C11&#xff09;auto简介auto的使用细则auto不能推导的场景 基于范围的for循环(C11)范围for的语法范围for的使用条件 指针空指针null…

什么是外呼系统?企业为什么使用ai电销外呼系统

说起ai电销外呼系统&#xff0c;或许有的人并不了解这是什么&#xff0c;但它却常常出现在我们的生活中&#xff0c;今天我们来看看什么是外呼系统&#xff0c;企业为什么使用ai电销外呼系统&#xff1f; 一、什么是外呼系统 外呼系统就是由系统自动拨打电话的&#xff0c;外呼…

WPF基础学习笔记

目录 基础知识&#xff1a; WPF的特点: WPF的优点 什么是XAML&#xff1f; 布局基础&#xff1a; 样式的应用&#xff1a; 控件模板&#xff08;ControlTemplate&#xff09;&#xff1a; 数据模板&#xff08;DataTemplate&#xff09;&#xff1a; 静态资源StaticRe…

Kasawaki川崎机器人故障维修

在当今的自动化工业领域&#xff0c;川崎工业机器人以其卓越的性能和可靠的工作效率赢得了广泛的赞誉。作为机器人的核心组成部分&#xff0c;伺服电机的作用至关重要。然而&#xff0c;就像所有机械设备一样&#xff0c;也可能会遭遇电机磨损或故障&#xff0c;需要适时的川崎…

如何为域名生成证书签发请求CSR

最近我们在Hostease购买了服务器产品&#xff0c;为了保障我们网站的安全&#xff0c;我们额外还购买了SSL证书产品。在Hostease技术客服的帮助下&#xff0c;我们成功签发了SSL证书。 在签发证书前需要生成一个证书签名请求CSR&#xff0c;证书签名请求(CSR)是一个包含有关你…

【计算机网络】http协议的原理与应用,以及https是如何保证安全传输的

HTTP 超文本传输协议&#xff08;英文&#xff1a;HyperText Transfer Protocol&#xff0c;缩写&#xff1a;HTTP&#xff09;是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。 HTTP的发展是由蒂姆伯纳斯-李于1989年在欧洲核子研究组织…

欣意无限信息技术有限公司邀您参观2024长三角快递物流展

参展企业介绍 郑州欣意无限信息技术有限公司成立于2017年&#xff0c;公司经营范围计算机网络技术开发、技术咨询、技术服务、技术转让&#xff1a;商务信息咨询服务&#xff1b;市场营销策划&#xff1b;设计、制作、代理、发布国内广告业务&#xff1b;电脑图文设计&#xff…

[IMX6ULL驱动开发]-GPIO子系统和Pinctrl子系统

目录 Pinctrl子系统的概念 GPIO子系统的概念 定义自己的GPIO节点 GPIO子系统的函数 引脚号的确定 基于GPIO子系统的驱动程序 驱动程序 设备树修改 之前我们进行驱动开发的时候&#xff0c;对于硬件的操作是依赖于ioremap对寄存器的物理地址进行映射&#xff0c;以此来达…

C++笔试强训day21

目录 1.爱丽丝的人偶 2.集合 3.最长回文子序列 1.爱丽丝的人偶 链接 简单叙述就是每个数的左右两边不能一个比他大&#xff0c;一个比他小。 反之&#xff0c;就是要让每个数的左右两边数都大于或者都小于他。 方法一&#xff1a;一开始我想复杂了&#xff0c;其实用试错法…

Pycharm使用Anaconda虚拟环境

一、前置 安装 Pychram安装 Anaconda&#xff0c;并配置虚拟环境 参考&#xff1a; Anaconda虚拟环境 anaconda虚拟环境pytorch安装 二、在Pycharm中使用Anaconda的虚拟环境 打开 Pycharm的命令行可以看到 Anaconda 的虚拟环境已经启动。 三、问题集合 &#xff08;1&…

IDEA报错:java 找不到符号

IDEA报错:java 找不到符号,代码没问题,IDEA缓存也清理了也重新构建了就是不行 最后使用终极大法 -Djps.track.ap.dependenciesfalse

海外仓混合订单拣货策略:人工与海外仓系统的最佳搭配模式

根据订单高效拣货是任何海外仓都要面对的问题。只有当订单可以被高效&#xff0c;准确的拣货之后&#xff0c;才能继续走下面的物流流程&#xff0c;所以尽可能的缩短拣货时间&#xff0c;提升拣货精准度&#xff0c;才是提升订单交付率的最佳方法。 海外仓企业都在不断寻找&am…

直播预告-如何快乐学习亚马逊云科技AWS,玩游戏备考亚马逊云科技云从业者认证?

一边玩一边学习亚马逊云科技云技能&#xff0c;这么好的事尊的假的&#xff1f;本周六&#xff08;5约11日&#xff09;晚20点&#xff0c;亚马逊云科技UG云端夜话Night Talk活动精彩回归&#xff5e; 本次亚马逊云科技UG云端夜话直播是什么&#xff1f; 小李哥这次将在多平台…