目前的任务是为用Dart编写的WebGL应用程序添加对全屏模式的支持。
canvas.requestFullscreen()适用于简单的测试用例,但在完整的应用程序上失败。
请指出是什么阻止浏览器切换到全屏的方法。
代码为:
void trapFullscreenError() {
document.onFullscreenError.listen((e) {
log("fullscreenerror: $e");
});
}
void toggleFullscreen(CanvasElement c) {
log(
"fullscreenSupport=${document.fullscreenEnabled} fullscreenElement=${document.fullscreenElement}"
);
if (document.fullscreenElement != null) {
log("exiting fullscreen");
document.exitFullscreen();
} else {
log("requesting fullscreen");
c.requestFullscreen();
}
}
在Chrome中,该代码导致:
fullscreenSupport=true fullscreenElement=null
requesting fullscreen
fullscreenerror: Instance of 'Event'
Dartium调试器显示以下字段:
Event [id=4]
_selector null
bubbles true
cancelable false
clipboardData null
currentTarget #document [id=5]
defaultPrevented false
eventPhase 3
hashCode 234642739
path NodeList[6] [id=6]
target canvas#main_canvas [id=7]
timeStamp 1398779450832
type "webkitfullscreenerror"
2条答案
按热度按时间2admgd591#
出于安全原因,
requestFullscreen
只能在键盘或单击事件的事件处理程序中调用。参见Javascript request fullscreen is unreliable
7cwmlq892#
我不知道你是否还在想这个。但是我已经通过在渲染器中标识事件内部的domElement成功地实现了它