媆媆_ 2023-05-24 10:38 采纳率: 31.8%
浏览 33

视频播放器DPlayer全屏水印不显示?

视频播放器DPlayer
监听竖屏和横屏(webfullscreen、fullscreen),更改水印范围,在竖屏的时候没问题,在横屏的时候看不到水印

/** 水印添加方法  */

let setWatermark = (str1, str2, container) => {
  let id = '1.23452384164.123412415';
  if (container === undefined) {
    return;
  }
  if (document.getElementById(id) !== null) {
    document.body.removeChild(document.getElementById(id));
  }
  // 设置局部水印
  var containerWidth = container.offsetWidth; // 获取父容器宽
  var containerHeight = container.offsetHeight; // 获取父容器高
  container.style.position = 'relative'; // 设置布局为相对布局
  var top = Math.random() * (containerHeight - 92);
  var left = Math.random() * (containerWidth - 548);
  let can = document.createElement('canvas');
  // 设置canvas画布大小
  can.width = 294;
  // can.width = 334;
  can.height = 90;

  let cans = can.getContext('2d');
  cans.rotate((-20 * Math.PI) / 180); // 水印旋转角度
  cans.font = '15px Vedana';
  // cans.font = '20px Vedana';
  cans.fillStyle = '#FFFF00  ';
  // cans.fillStyle = '#AAAAAA';
  // cans.textAlign = 'center';
  cans.border = '1px solid red';
  cans.textBaseline = 'Middle';
  cans.fillText(str1, can.width / 2, can.height); // 水印在画布的位置x,y轴
  cans.fillText(str2, can.width / 2, can.height + 22);

  let div = document.createElement('div');
  div.id = id;
  div.style.pointerEvents = 'none';
  div.style.top = top + 'px';
  div.style.left = left + 'px';
  div.style.opacity = '0.15';
  div.style.position = 'fixed';
  div.style.zIndex = '400000';
  div.style.width = '294px';
  // div.style.width = '394px';
  div.style.height = '90px';
  div.style.background = 'url(' + can.toDataURL('image/png') + ') left top repeat';
  // document.body.appendChild(div);
  container.appendChild(div);
console.log('container', container);


  return id;
};

// 添加水印方法
export const setWaterMark = (str1, str2, container) => {
  let id = setWatermark(str1, str2, container);
  if (document.getElementById(id) === null) {
    id = setWatermark(str1, str2, container, isfullscreen);
  }
};

// 移除水印方法
export const removeWatermark = () => {
  let id = '1.23452384164.123412415';
  if (document.getElementById(id) !== null) {
    document.body.removeChild(document.getElementById(id));
  }
};
  • 写回答

2条回答 默认 最新

  • 蓝色心灵-海 2023-05-26 10:10
    关注

    这段代码是添加水印到视频播放器中的方法,实现的功能是在视频播放器的指定容器中添加一个带有随机位置和旋转角度的水印。在竖屏模式下可以正常显示,但是在横屏模式下水印无法显示。
    这里是一些可能引起问题的代码行:

     1.  `container.style.position = 'relative';`  
    
    

    这行代码将容器的布局样式设置为相对布局,这会导致水印位置的计算出现问题,因为它是相对于父容器定位的。

     2.  `div.style.position = 'fixed';` 
    
    

    这行代码将水印的定位方式设置为固定定位,这将导致水印的位置无法正确地响应容器大小的变化。

     3.  `div.style.width = '294px';` 
    
    

    这行代码为水印容器设置了一个固定的宽度,在横屏模式下,宽度可能会超出容器的大小。
    解决方法是检查代码中的容器布局和定位,以确保水印可以正确地响应容器大小的变化。在横屏模式下,可以考虑重新计算水印的位置和旋转角度。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月24日

悬赏问题

  • ¥15 pycharm添加远程解释器报错
  • ¥15 如何让子窗口鼠标滚动独立,不要传递消息给主窗口
  • ¥15 如何能达到用ping0.cc检测成这样?如图
  • ¥15 关于#DMA固件#的问题,请各位专家解答!
  • ¥15 matlab生成的x1图不趋于稳定,之后的图像是稳定的水平线
  • ¥15 请问华为OD岗位的内部职业发展通道都有哪些,以及各个级别晋升的要求
  • ¥20 微信小程序 canvas 问题
  • ¥15 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
  • ¥15 怎么把512还原为520格式
  • ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照