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

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 前先设好src和preload(比如preload="metadata"),再appendChild - 在
DOMContentLoaded后立即执行video.load(),抢在360脚本扫描前完成加载准备 - 如果仍被劫持,临时加个“障眼法”:
外层套一层,部分版本会因此放弃接管- 终极方案(不推荐但有效):在 URL 后加参数
?_t=xxx强制刷新资源路径,破坏360的资源哈希匹配逻辑检查是否真被劫持的快速验证方式
打开开发者工具(F12),在 Console 里执行:
立即学习“前端免费学习笔记(深入)”;
jQuery移动端和桌面设备的轻量级幻灯片特效源码下载jQuery移动端和桌面设备的轻量级幻灯片特效源码是一款支持移动端和桌面设备的轻量级jQuery幻灯片插件swipeslider的特效。它支持图片和其它HTML内容,支持幻灯片内容无限循环播放。本代码适用浏览器:搜狗、360、FireFox、Chrome、Safari、Opera、傲游、世界之窗,不支持IE8及以下浏览器。有兴趣的朋友们可以来下载试试吧。本段代码兼容目前最新的各类主流浏览器,是一款
getComputedStyle(document.querySelector('video')).display如果返回
"none"或"hidden",说明原生已被隐藏,360启动了自己的播放器层;如果返回"inline"或"block",且video.readyState > 0,说明 HTML5 播放已生效。这时候再查
video.src是否还是原始地址、video.networkState是否为1(NETWORK_LOADING),就能确认是不是“表面HTML、底层被代理”。真正在意兼容性的项目,别指望靠一个属性开关搞定;360的视频拦截逻辑藏在私有 JS 里,每次更新都可能换套路。最稳的做法是:在初始化时做一次
if (navigator.userAgent.includes('QIHU'))分支,对它单独加延迟 load + 强制 playsinline + 禁用右键菜单(它有时靠右键菜单存在判断是否为“可接管视频”)。 - 终极方案(不推荐但有效):在 URL 后加参数










