【问题标题】:Force a div to show up and overlay whatever is in fullscreen强制 div 显示并覆盖全屏中的任何内容
【发布时间】:2014-06-23 19:09:57
【问题描述】:

我有一个 Chrome 扩展程序,可以在页面中插入一个菜单,但是每当任何 flash 或 html5 视频播放器全屏显示时,视频播放器之外的任何内容都是不可见的。

我可以同时全屏显示两个对象(一个在另一个上),还是有其他方法可以做到这一点?由于现有的视频播放器种类繁多,我宁愿不必将 html 专门插入不同网站的不同位置。该解决方案应该适用于所有视频播放器。

编辑:

从那时起,很多网络都开始使用 html5 而不是 flash,所以这已成为几乎所有网站都可以做的事情。

这是我最终编写和使用的代码。希望这会对某人有所帮助:

document.addEventListener("webkitfullscreenchange", function(){//Whenever an element becomes or stops being in full screen
    //first, grab the page's fullscreenElement
    var fse = document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;

    if(fse){//if there is a fullscreened element
        fse.appendChild(menu);//append the menu inside the fullscreened element
    }else{//if nothing is in full screen
        if(window.self !== window.top){//if we are in an iframe
            menu.remove();//hide menu if we are in an iframe
        }else{//if we arn't in an iframe
            document.body.insertBefore(menu, document.body.firstChild);//show menu
        }
    }
});

【问题讨论】:

  • 如果你能得到屏幕截图会很有帮助,这样我们就可以了解出了什么问题。
  • 你说的div,可能跟z-index这个属性有关?
  • div有什么positiondisplay
  • style="z-index: 9999998; background-color: rgb(153, 102, 0);position: fixed;"
  • 您可以全屏显示除视频元素之外的元素,它会显示您正在寻找的内容。例如,使用 mediabrowser3 全屏视频播放器,我还可以将视频控件显示为悬停时的叠加层。但是,您似乎正在尝试在 Youtube 上覆盖某些内容,是的,这可能行不通。如果您无法控制 如何 全屏是实现的,那么您将被给定的内容所困扰。示例:Imgur

标签: javascript jquery html css google-chrome


【解决方案1】:

这不太可能。视频播放器全屏实现接管整个屏幕;你没有可以覆盖的浏览器窗口了。

这与在浏览器中全屏显示不同,您仍然可以使用正常的浏览器窗口。

编辑:进一步扩展;

对于任何使用 Flash 的视频播放器,这是绝对不可能的,因为您没有机会覆盖任何 HTML 元素;全屏是由 flash 自己处理的,你不能用它做任何事情。

使用 HTML5,从我的测试来看,这似乎也是不可能的。我去了this sample page,在开发工具中编辑了HTML,尝试在视频元素中插入一个div,但它不会呈现。

如果您可以控制页面,则可以全屏显示容器 div 而不是视频本身,然后实现您想要的,但由于您无法控制有问题的页面,这可能不会完全可以帮助您(除非您想尝试在页面内替换 ID/etc,但即使这样也不能保证成功;如果页面 JS 已经在相关元素上有句柄,替换 ID 不会更新这些)

【讨论】:

  • 答案差不多是这个,想改进它,但我看不到链接,所以我会在这里添加:视频标签内没有呈现任何内容的原因是因为您的浏览器知道如何呈现视频,它会获取里面的源标签。 video 标签内的 div 仅适用于无法呈现 video 标签并将 div 显示为后备的浏览器。做到这一点的唯一方法是检测 HTML5 或 Flash 视频源,将其剥离并创建自己的播放器,可能您需要为要与之交互的每个服务创建特定代码,因此它不会是通用的
【解决方案2】:

不幸的是,正如@Collin Grady 所说,这是不可能的,因为浏览器会在您播放全屏视频时进行处理。

您仍然可以模拟全屏!您可以修改视频的大小以适应屏幕的大小(或您需要的任何大小)。通过这样做,您仍然可以控制您的元素,并且可以在视频顶部显示您的菜单。

CSS Tricks 中有一篇文章可以指导您如何修改 youtube 视频的尺寸。文章作者也写了一个jQuery插件叫FitVids.JS

通过模拟全屏,您可以在顶部显示您想要的内容。

希望对你有帮助

【讨论】:

  • 7 年后,这个答案帮助我找出了我的全屏问题。谢谢!
猜你喜欢
  • 2012-02-08
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-02
  • 2016-09-15
  • 1970-01-01
相关资源
最近更新 更多