javascript - 使用 HTML 和 JavaScript 的 WebGL 全屏按钮?
问题描述
使用 HTML 和 JavaScript 的 WebGL 全屏按钮?
我已经多次搜索该主题,但找不到可行的方法,但是我确实找到了一个可以将我的页面全屏显示的按钮
<input type="button" value="click to toggle fullscreen" onclick="toggleFullScreen()">
<script>function toggleFullScreen() {
if ((document.fullScreenElement && document.fullScreenElement !== null) ||
(!document.mozFullScreen && !document.webkitIsFullScreen)) {
if (document.documentElement.requestFullScreen) {
document.documentElement.requestFullScreen();
} else if (document.documentElement.mozRequestFullScreen) {
document.documentElement.mozRequestFullScreen();
} else if (document.documentElement.webkitRequestFullScreen) {
document.documentElement.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
}
} else {
if (document.cancelFullScreen) {
document.cancelFullScreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.webkitCancelFullScreen) {
document.webkitCancelFullScreen();
}
}
}</script>
这确实有效,但不适用于 WebGL 内容。这是我iframe
用来在我的网站上加载 WebGL 内容的方法。
<!DOCTYPE html>
<html>
<body>
<iframe src="WEBGL CONTENT IS HERE"></iframe>
</body>
</html>
如果有人可以提供帮助,那就太好了!
解决方案
这是一种更好的方法,它适用于所有浏览器,包括 safari
创建一个使窗口全屏的函数
const fullScreen = (invoker) => {
const fullscreenElement = document.fullscreenElement || document.webkitFullscreenElement;
if (!fullscreenElement) {
if (invoker.requestFullscreen) { invoker.requestFullscreen() }
else if (invoker.webkitRequestFullscreen) { invoker.webkitRequestFullscreen() }
} else {
if (document.exitFullscreen) { document.exitFullscreen() }
else if (document.webkitExitFullscreen) { document.webkitExitFullscreen()}
}
}
现在您可以调用任何事件监听器
const webgl = document.querySelector("canvas.webgl");
webgl.addEventListener('dblclick', () => {
// calling our fullscreen function here webgl is invoker
fullScreen(webgl);
})
推荐阅读
- google-chrome - Chrome devtools,记住扩展元素和刷新时的选择
- java - UnreachableBrowserException - PC 更新后的 Selenium 脚本。更新前一切正常
- opencv - 运行带有外部库问题的 java jar 文件
- c# - 如何设置 QuartzNet 以执行重复的后台作业?
- gcc - 交叉编译器中包含文件夹的目的
- mediawiki - 禁止在 Mediawiki 中编辑源代码
- python - db.engine.echo 为真,即使 SQLALCHEMY_ECHO 为假
- django - 如何将数据从一个模型添加到另一个 django?
- bash - 如何在 BASH 中附加字符串和变量
- elasticsearch - 不替代自然评分的 ElasticSearch 自定义脚本评分