Reveal.js全屏功能异常:按下‘f’后自动退出全屏
问题
配置Reveal.js时,按下快捷键f触发全屏功能后,页面短暂进入全屏就立刻恢复正常尺寸,多款浏览器都出现这个问题,可排除浏览器因素。
我的Reveal.js配置如下:
Reveal.initialize({ backgroundTransition: 'fade', // 背景动画,默认fade,可选none/slide/convex/concave/zoom transition: 'slide', // 页面过渡动画,默认slide,可选none/fade/convex/concave/zoom transitionSpeed: 'default', // 过渡动画速度,默认default,可选fast/slow autoSlide: 2000, // 自动切换幻灯片间隔(毫秒),0为关闭 loop: true, shuffle: false, // 是否随机排序幻灯片 controls: true, // 是否显示控制按钮 rtl: false, // 是否从右到左展示 controlsLayout: 'bottom-right', // 控制按钮位置,默认bottom-right,可选edges controlsBackArrows: 'faded', // 返回箭头显示状态,默认faded,可选visible/hidden mouseWheel: true, // 是否允许鼠标滚轮切换幻灯片 keyboardCondition: function() {return true}, respondToHashChanges: false, progress: false, // 是否显示进度条 slideNumber: 'c/t', // 幻灯片编号格式,默认false,可选'c'(当前页)、'c/t'(当前/总页数) postMessage: false, embedded: true, disableLayout: true });
另外在onDocumentKeyDown中找到如下按键处理代码,是否需要调整?
"f"===e.key?(console.log("Firing Fullscreen"),o(t.embedded?this.Reveal.getViewportElement():document.documentElement)):
解决方案
- 移除
embedded: true配置:如果没有将演示嵌入其他页面的需求,直接删除该配置项。开启embedded后,Reveal.js会把全屏目标限定为视图容器而非整个文档,这是导致全屏异常退出的核心原因之一。 - 关闭
disableLayout: true:该配置会禁用Reveal.js的默认布局逻辑,可能干扰全屏模式的正常渲染。将其改为disableLayout: false后重新测试全屏功能。 - 强制触发文档全屏(若需保留
embedded):如果必须开启embedded,修改按键处理代码,强制让整个文档进入全屏,替换后的代码如下:
"f"===e.key?(console.log("Firing Fullscreen"),o(document.documentElement)):
- 排查自动切换冲突:当前配置开启了
autoSlide: 2000和loop: true,自动切换可能在全屏触发后立即触发页面重绘,导致全屏状态中断。可以先将autoSlide设为0关闭自动切换,测试问题是否消失;若解决,再考虑调整自动切换逻辑,比如在全屏状态下暂停自动切换。
内容的提问来源于stack exchange,提问作者user23652581
相关产品推荐
相关产品推荐

