allowfullscreen是布尔属性,仅声明iframe内容可调用requestFullscreen();现代浏览器还需allow="fullscreen",否则静默失败,且需兼顾webkitallowfullscreen、mozallowfullscreen兼容旧版。

allowfullscreen 是 iframe 的布尔属性,但它本身不“开启”全屏功能——它只是告诉浏览器:“这个 iframe 里的内容被允许调用 requestFullscreen()”。没有它,嵌入的视频(比如 YouTube、Bilibili)点全屏按钮会直接失效。
为什么加了 allowfullscreen 还不能全屏?
常见错误是只写 allowfullscreen,但漏掉现代浏览器要求的权限升级机制:
- Chrome 71+、Edge 79+、Safari 13.1+ 要求同时声明
allow="fullscreen" - 仅
allowfullscreen在新版本中会被忽略(尤其 iOS Safari 和桌面 Safari) - 部分平台(如微信内置浏览器)还额外要求
webkitallowfullscreen和mozallowfullscreen兼容写法
正确写法:兼容所有主流环境
实际部署时建议这样写(一行内,无换行):
<iframe src="https://www.youtube.com/embed/xxx" allowfullscreen allow="fullscreen" webkitallowfullscreen mozallowfullscreen ></iframe>
说明:
立即学习“前端免费学习笔记(深入)”;
-
allowfullscreen是 HTML5 标准属性,基础支持 -
allow="fullscreen"是 Permissions Policy(原 Feature Policy)语法,必须显式声明,否则现代浏览器拒绝授权 -
webkitallowfullscreen/mozallowfullscreen对旧版 Safari/Firefox 有兜底作用,不加也不报错,但加了更稳
嵌入 Bilibili 或自建视频页时的特殊注意点
Bilibili 官方 embed 地址默认已带 allowfullscreen,但如果你用的是 iframe 自定义 src(比如跳过 B 站首页跳转),需手动补全;自建视频页若用了 video + requestFullscreen(),则 iframe 外层必须满足上述全部条件,否则 JS 调用会抛出 SecurityError: Document not allowed to call requestFullscreen()
- 检查控制台是否出现该错误信息 —— 是最直接的判断依据
- 确保 iframe 的
src是 HTTPS 协议(HTTP 页面中嵌 HTTPS iframe 通常仍可全屏,但反之不行) - 不要把
allowfullscreen写成allowfullscreen="true",它是布尔属性,有即生效
最容易被忽略的是 allow="fullscreen" 这一行——它不像 class 那样“写了就有效”,而是浏览器强制执行的权限白名单。少它,哪怕其他都对,全屏按钮也静默失败。



















