全屏 API 和外部链接
Fullscreen API and external links
我正在尝试使用全屏 API 打开一个新页面(具有不同的布局)。当用户单击打开的课程 link 时,适当的 page/layout 将以全屏模式打开。
我正在使用此功能来启动全屏模式:
// Find the right method, call on correct element
function launchIntoFullscreen(element) {
if(element.requestFullscreen) {
element.requestFullscreen();
} else if(element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if(element.webkitRequestFullscreen) {
element.webkitRequestFullscreen();
} else if(element.msRequestFullscreen) {
element.msRequestFullscreen();
}
}
// Launch fullscreen for browsers that support it!
launchIntoFullscreen(document.documentElement); // the whole page
问题是,API 只接受在全屏模式下打开同一页面或隐藏元素。我知道这是预期的行为。
我需要在用户点击正确的 link 时以全屏模式打开不同的页面。
是否有任何解决方法可以实现?
这是我目前用来切换全屏模式的。
function fullscreen() {
var isInFullScreen = (document.fullscreenElement && document.fullscreenElement !== null) ||
(document.webkitFullscreenElement && document.webkitFullscreenElement !== null) ||
(document.mozFullScreenElement && document.mozFullScreenElement !== null) ||
(document.msFullscreenElement && document.msFullscreenElement !== null);
if (!isInFullScreen) {
if (document.documentElement.requestFullscreen) {
document.documentElement.requestFullscreen();
} else if (document.documentElement.mozRequestFullScreen) {
document.documentElement.mozRequestFullScreen();
} else if (document.documentElement.webkitRequestFullScreen) {
document.documentElement.webkitRequestFullScreen();
} else if (document.documentElement.msRequestFullscreen) {
document.documentElement.msRequestFullscreen();
}
} else {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
}
}
}
您无法全屏启动新页面,因为它受到浏览器安全性的限制(如您所见)。但是,您可以全屏打开 .NET 或 Java 应用程序。
尝试绕过浏览器安全性的一个建议是提供一个插件,该插件将与您的页面一起使用,将其功能扩展到用户桌面。
您也可以尝试更多低级事件挂钩或尝试模拟它们(例如,伪造 'Click' 硬件事件)。如果需要,可以使用另一种语言来辅助,例如 Flash、Java 或 .NET。
希望这些信息足以让齿轮运转并解决问题。我相信你能理解为什么这是浏览器安全的一部分,但也存在使用可扩展性绕过的可能性,恕我直言,这是一个 m00t 因素。如果他们真的希望保证浏览器的安全,那么他们就没有自动下载或自动 运行 东西的选项,而且 javascript 也没有能力使用 [=26= 发送垃圾邮件] 阻止对话框或播放音频——等等。但我离题了。在 'browser security' 的幌子下缺乏使用此功能是一个非常薄弱的论点,因为那里还有很多更麻烦的问题。
我正在尝试使用全屏 API 打开一个新页面(具有不同的布局)。当用户单击打开的课程 link 时,适当的 page/layout 将以全屏模式打开。
我正在使用此功能来启动全屏模式:
// Find the right method, call on correct element
function launchIntoFullscreen(element) {
if(element.requestFullscreen) {
element.requestFullscreen();
} else if(element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if(element.webkitRequestFullscreen) {
element.webkitRequestFullscreen();
} else if(element.msRequestFullscreen) {
element.msRequestFullscreen();
}
}
// Launch fullscreen for browsers that support it!
launchIntoFullscreen(document.documentElement); // the whole page
问题是,API 只接受在全屏模式下打开同一页面或隐藏元素。我知道这是预期的行为。
我需要在用户点击正确的 link 时以全屏模式打开不同的页面。
是否有任何解决方法可以实现?
这是我目前用来切换全屏模式的。
function fullscreen() {
var isInFullScreen = (document.fullscreenElement && document.fullscreenElement !== null) ||
(document.webkitFullscreenElement && document.webkitFullscreenElement !== null) ||
(document.mozFullScreenElement && document.mozFullScreenElement !== null) ||
(document.msFullscreenElement && document.msFullscreenElement !== null);
if (!isInFullScreen) {
if (document.documentElement.requestFullscreen) {
document.documentElement.requestFullscreen();
} else if (document.documentElement.mozRequestFullScreen) {
document.documentElement.mozRequestFullScreen();
} else if (document.documentElement.webkitRequestFullScreen) {
document.documentElement.webkitRequestFullScreen();
} else if (document.documentElement.msRequestFullscreen) {
document.documentElement.msRequestFullscreen();
}
} else {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
}
}
}
您无法全屏启动新页面,因为它受到浏览器安全性的限制(如您所见)。但是,您可以全屏打开 .NET 或 Java 应用程序。
尝试绕过浏览器安全性的一个建议是提供一个插件,该插件将与您的页面一起使用,将其功能扩展到用户桌面。
您也可以尝试更多低级事件挂钩或尝试模拟它们(例如,伪造 'Click' 硬件事件)。如果需要,可以使用另一种语言来辅助,例如 Flash、Java 或 .NET。
希望这些信息足以让齿轮运转并解决问题。我相信你能理解为什么这是浏览器安全的一部分,但也存在使用可扩展性绕过的可能性,恕我直言,这是一个 m00t 因素。如果他们真的希望保证浏览器的安全,那么他们就没有自动下载或自动 运行 东西的选项,而且 javascript 也没有能力使用 [=26= 发送垃圾邮件] 阻止对话框或播放音频——等等。但我离题了。在 'browser security' 的幌子下缺乏使用此功能是一个非常薄弱的论点,因为那里还有很多更麻烦的问题。