angular - 限制用户在 Angular 8 中退出全屏模式
问题描述
我正在为我的应用程序使用Angular v8。我的问题是我想限制用户退出全屏模式。我在 Stack Overflow 上查看了各种解决方案并找到了一个。下面是我尝试实现的代码:
ngOnInit() {
this.attachEventListeners();
}
attachEventListeners() {
document.addEventListener('fullscreenchange', this.onFullScreenChange(), false);
document.addEventListener('webkitfullscreenchange', this.onFullScreenChange(), false);
document.addEventListener('mozfullscreenchange', this.onFullScreenChange(), false);
}
onFullScreenChange() {
const fullscreenElement = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement;
console.log(fullscreenElement);
// if in fullscreen mode fullscreenElement won't be null
}
但是这段代码抛出了一个错误:
ExamComponent_Host.ngfactory.js? [sm]:1 ERROR TypeError: Cannot read property 'instance' of undefined
at nodeValue (core.js:27236)
at Object.eval [as handleEvent] (ExamComponent_Host.ngfactory.js? [sm]:1)
at handleEvent (core.js:38098)
at callWithDebugContext (core.js:39716)
at Object.debugHandleEvent [as handleEvent] (core.js:39352)
at dispatchEvent (core.js:25818)
at core.js:37030
at platform-browser.js:1789
at ZoneDelegate.invokeTask (zone-evergreen.js:391)
at Object.onInvokeTask (core.js:34182)
我不知道是否有使用@HostListener
for angular 的东西来处理这个问题。请帮忙。
解决方案
我看到这个问题有点老了,但可能对其他人有帮助 - 以前我遇到过同样的问题并找到以下解决方案@HostListener
:
@HostListener("document:fullscreenchange", [])
fullScreen() {
if (document.fullscreenElement) {
console.log(`Entered full-screen mode.`);
} else {
console.log('Leaving full-screen mode.');
}
}
从这个答案:https ://stackoverflow.com/a/42282972/1362723 。
推荐阅读
- javascript - 用于取消修复滚动工具栏的脚本适用于 chrome 上的 tampermonkey,但不适用于 firefox 上的 greasmonkey
- javascript - 如何更干净地编写这个重复的 JS 函数?
- c++ - 如何在使用 Apache Arrow C++ API 读取 CSV 时管理内存?
- c# - ASP.NET MVC 5:我的应用程序没有从我的数据库中读取数据
- java - Pom.xml 文件在 Eclipse 中有一个红色的 X
- c - 在 C 中,如何使结构无法访问,free() 无法以某种方式工作?
- python - 测试错误:ElementClickInterceptedException
- bash - 忽略(或不打印)查找警告 bash
- python - 匹配一个单词但仅当另一个单词没有出现时的正则表达式?
- nunjucks - 任意多个项目的 11、Nunjucks 和简码性能/语法