如何把360浏览器播放器设置成html

2次阅读

360浏览器无“播放器设置成html”功能,实为拦截video标签并启用自有播放器;可通过添加playsinline属性、动态创建video、提前load、z-index障眼法等绕过劫持。

如何把360浏览器播放器设置成html

360浏览器不支持“把播放器设置成HTML”

360浏览器本身没有“播放器设置成HTML”这个功能或配置项——它是个浏览器,不是播放器SDK。你真正想做的,大概率是:让网页里的视频/音频在360浏览器中正常用 html5 标签播放,而不是调用它的旧版Flash插件或内置的“360影视播放器”外壳。

为什么标签在360浏览器里会跳转到独立播放器

360浏览器(尤其老版本)默认启用了“智能视频播放”策略:检测到页面有视频资源时,自动拦截 标签,替换成自己的全屏播放界面。这不是 bug,是它的主动干预行为。

  • 常见错误现象: 在其他浏览器能内嵌播放,但在360里点开直接弹新窗口、失去控制权、play() 调用无效、canplay 事件不触发
  • 根本原因:360浏览器注入了全局脚本,重写了 HTMLMediaElement.prototype.play,并监听 document 上的 video 元素插入行为
  • 兼容性影响:该行为在“极速模式”(基于 Chromium)下较弱,在“兼容模式”(Trident 内核)下最顽固;新版360安全浏览器 v13+ 已大幅减弱,但企业用户常卡在 v10–v12

绕过360浏览器视频劫持的实操方法

核心思路:不让它识别出这是“可接管的视频”,或提前切断它的钩子。

  • webkit-playsinline + x5-playsinline + playsinline 属性,并确保容器有明确宽高(空 容易被跳过识别)
  • 动态创建 元素,而非静态写在 HTML 里;插入 dom 前先设好 srcpreload(比如 preload="metadata"),再 appendChild
  • DOMContentLoaded 后立即执行 video.load(),抢在360脚本扫描前完成加载准备
  • 如果仍被劫持,临时加个“障眼法”: 外层套一层
    ,部分版本会因此放弃接管

  • 终极方案(不推荐但有效):在 URL 后加参数 ?_t=xxx 强制刷新资源路径,破坏360的资源哈希匹配逻辑
  • 检查是否真被劫持的快速验证方式

    打开开发者工具(F12),在 console 里执行:

    立即学习前端免费学习笔记(深入)”;

    getComputedStyle(document.querySelector('video')).display

    如果返回 "none""hidden",说明原生 已被隐藏,360启动了自己的播放器层;如果返回 "inline""block",且 video.readyState > 0,说明 HTML5 播放已生效。

    这时候再查 video.src 是否还是原始地址、video.networkState 是否为 1NETWORK_LOADING),就能确认是不是“表面HTML、底层被代理”。

    真正在意兼容性的项目,别指望靠一个属性开关搞定;360的视频拦截逻辑藏在私有 js 里,每次更新都可能换套路。最稳的做法是:在初始化时做一次 if (navigator.userAgent.includes('QIHU')) 分支,对它单独加延迟 load + 强制 playsinline + 禁用右键菜单(它有时靠右键菜单存在判断是否为“可接管视频”)。

text=ZqhQzanResources