未捕获类型错误:非法调用javascript
如何修复此类中调用函数时的非法调用 新建FullScreen.request;//未捕获类型错误:非法调用 新建全屏显示。取消//未捕获类型错误:非法调用 新的全屏切换//未捕获类型错误:非法调用未捕获类型错误:非法调用javascript,javascript,ecmascript-6,Javascript,Ecmascript 6,如何修复此类中调用函数时的非法调用 新建FullScreen.request;//未捕获类型错误:非法调用 新建全屏显示。取消//未捕获类型错误:非法调用 新的全屏切换//未捕获类型错误:非法调用 这在Javascript中是与上下文相关的。当您调用this.request时,它将转换为this.requestFullscreen。当this.requestFullscreen=document.documentElement.requestFullscreen时,this.requestFul
这在Javascript中是与上下文相关的。当您调用this.request时,它将转换为this.requestFullscreen。当this.requestFullscreen=document.documentElement.requestFullscreen时,this.requestFullscreen!=document.documentElement.requestFullscreen。相反,this.requestFullscreen==document.documentElement.requestFullscreen.callthis。换句话说,requestFullscreen函数期望一个documentElement作为该指针,但它获取一个全屏实例,从而导致非法调用异常。要修复此错误,您需要在构造函数中绑定上下文。Javascript中的上下文与上下文相关。当您调用this.request时,它将转换为this.requestFullscreen。当this.requestFullscreen=document.documentElement.requestFullscreen时,this.requestFullscreen!=document.documentElement.requestFullscreen。相反,this.requestFullscreen==document.documentElement.requestFullscreen.callthis。换句话说,requestFullscreen函数期望一个documentElement作为该指针,但它获取一个全屏实例,从而导致非法调用异常。要修复错误,您需要在构造函数中绑定上下文。如果不进行测试,我的最佳猜测是您丢失了文档的上下文。我建议将文档元素转移到方法中
import validator from "Validator";
export default class FullScreen {
constructor() {
if (!validator.checkValueType(Modernizr.fullscreen, "BOOLEAN") && Modernizr.fullscreen) {
throw new UserException("Fullscreen not supported in this browser");
}
}
request() {
document.documentElement.requestFullscreen || document.documentElement.msRequestFullscreen ||
document.documentElement.mozRequestFullScreen || document.documentElement.webkitRequestFullscreen;
}
cancel() {
document.cancelFullScreen || document.msCancelFullScreen || document.mozRequestFullScreen || document.webkitRequestFullscreen;
}
isFullScreen() {
return document.isFullScreen || document.msIsFullScreen || document.mozIsFullScreen || document.webkitIsFullScreen;
}
toggle() {
if (this.isFullScreen()) this.cancel();
else this.request();
}
}
如果不进行测试,我最好的猜测是您已经丢失了文档的上下文。我建议将文档元素转移到方法中
import validator from "Validator";
export default class FullScreen {
constructor() {
if (!validator.checkValueType(Modernizr.fullscreen, "BOOLEAN") && Modernizr.fullscreen) {
throw new UserException("Fullscreen not supported in this browser");
}
}
request() {
document.documentElement.requestFullscreen || document.documentElement.msRequestFullscreen ||
document.documentElement.mozRequestFullScreen || document.documentElement.webkitRequestFullscreen;
}
cancel() {
document.cancelFullScreen || document.msCancelFullScreen || document.mozRequestFullScreen || document.webkitRequestFullscreen;
}
isFullScreen() {
return document.isFullScreen || document.msIsFullScreen || document.mozIsFullScreen || document.webkitIsFullScreen;
}
toggle() {
if (this.isFullScreen()) this.cancel();
else this.request();
}
}