【发布时间】:2016-12-07 05:31:42
【问题描述】:
如何解决此类调用函数时的非法调用问题
new FullScreen().request(); // 未捕获的 TypeError:非法调用
新的 FullScreen().cancel(); //未捕获的TypeError:非法调用
新的 FullScreen().toggle(); //未捕获的TypeError:非法调用
import validator from "Validator";
export default class FullScreen {
constructor() {
if (validator.checkValueType(Modernizr.fullscreen, "BOOLEAN") && Modernizr.fullscreen) {
this.requestFullscreen = document.documentElement.requestFullscreen || document.documentElement.msRequestFullscreen ||
document.documentElement.mozRequestFullScreen || document.documentElement.webkitRequestFullscreen;
this.cancelFullScreen = document.cancelFullScreen || document.msCancelFullScreen || document.mozRequestFullScreen || document.webkitRequestFullscreen;
} else {
throw new UserException("Fullscreen not supported in this browser");
}
}
request() {
this.requestFullscreen();
}
cancel() {
this.cancelFullScreen();
}
isFullScreen() {
return document.isFullScreen || document.msIsFullScreen || document.mozIsFullScreen || document.webkitIsFullScreen;
}
toggle() {
if (this.isFullScreen()) this.cancel();
else this.request();
}
}
【问题讨论】: