Javascript 在Chrome/Firefox中全屏按escape时未触发按键事件
我有这个网站,这是我的下一个投资组合网站: 在右下角,我有一个锚标记,它触发下一个javascript:Javascript 在Chrome/Firefox中全屏按escape时未触发按键事件,javascript,jquery,html,webkit,fullscreen,Javascript,Jquery,Html,Webkit,Fullscreen,我有这个网站,这是我的下一个投资组合网站: 在右下角,我有一个锚标记,它触发下一个javascript: $(".expand").on("click", function() { $(document).toggleFullScreen(); $("#header-container, #footer-container").toggleClass('toggle-display'); $("header, footer").toggleClass('toggle-h
$(".expand").on("click", function() {
$(document).toggleFullScreen();
$("#header-container, #footer-container").toggleClass('toggle-display');
$("header, footer").toggleClass('toggle-height');
$("a.expand").toggleClass('toggle-bottom');
});
$(window).on("keydown", function(e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 27, 122) {
$("#header-container, #footer-container").removeClass('toggle-display');
$("header, footer").removeClass('toggle-height');
$("a.expand").removeClass('toggle-bottom')
}
});
第一个代码将触发“jquery.fullscreen 1.1.4”.js,由Klaus Reimer编写:
下一行将在css“toggledisplay”中添加一个类,它隐藏“#页眉容器”和“#页脚容器”。“切换高度”将为“页眉”和“页脚”(30px)提供新的高度,“切换底部”将为按钮提供新的右下边距
如果我用按钮切换,效果很好。但是,如果有人使用ESC(在Firefox中)或ESC和F11(在Chrome中)按钮,网站将从全屏上退出,但注入的CSS更改保持不变。这将破坏整个体验
所以我创建了第二个代码组,当有人按ESC或F11时,我在其中删除这些类
问题是:
- 在Firefox中,F11非常好用!它正在删除类,因此 垂直图像高度javascript还保持图像高度和 宽高比没有问题
- 但若按ESC键,它将从全屏中退出,但不会删除 上课。您需要再次按ESC或F11来运行代码。但是 然后,jquery.fullscreen仍在运行(因为没有任何关闭) 电话)。如果第二次按同一键,图像将垂直显示 在对视口进行更改之前,不会将其拟合到视口中 浏览器视口大小(例如:进入窗口模式并 更改浏览器大小)
- Chrome也有同样的问题,但因为Chrome进入本地 F11也全屏显示,问题也出现了
$(".expand").on("click", function() {
$(document).toggleFullScreen();
});
$(document).on("fullscreenchange", function() {
if($(document).fullScreen()){
//Just went into fullscreen
$("#header-container, #footer-container").addClass('toggle-display');
$("header, footer").addClass('toggle-height');
$("a.expand").addClass('toggle-bottom');
}else{
//Just exit fullscreen
$("#header-container, #footer-container").removeClass('toggle-display');
$("header, footer").removeClass('toggle-height');
$("a.expand").removeClass('toggle-bottom');
}
});
更新2013.09.16-解决方案强>
没有帮助调用atmeretezo()
insidefullscreenchange
事件,所以我进行了一些搜索。原来有一个:全屏CSS伪类!:)
因此,我将js替换为:
// https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html
// https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode
// http://www.sitepoint.com/html5-full-screen-api/
$(document).ready(function(){
function toggleFullScreen() {
if (!document.fullscreenElement && // alternative standard method
!document.mozFullScreenElement && !document.webkitFullscreenElement) { // current working methods
if (document.documentElement.requestFullscreen) {
document.documentElement.requestFullscreen();
} else if (document.documentElement.mozRequestFullScreen) {
document.documentElement.mozRequestFullScreen();
} else if (document.documentElement.webkitRequestFullscreen) {
document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
}
} else {
if (document.cancelFullScreen) {
document.cancelFullScreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.webkitCancelFullScreen) {
document.webkitCancelFullScreen();
}
}
}
$(".expand").on("click", function() {
toggleFullScreen();
});
});
我在CSS中添加了以下行:
/* EXPAND */
:-webkit-full-screen #header-container { display: none; visibility: hidden; }
:-webkit-full-screen #footer-container { display: none; visibility: hidden; }
:-moz-full-screen #header-container { display: none; visibility: hidden; }
:-moz-full-screen #footer-container { display: none; visibility: hidden; }
:fullscreen #header-container { display: none; visibility: hidden; }
:fullscreen #footer-container { display: none; visibility: hidden; }
:-webkit-full-screen header { height: 30px; }
:-webkit-full-screen footer { height: 30px; }
:-moz-full-screen header { height: 30px; }
:-moz-full-screen footer { height: 30px; }
:fullscreen header { height: 30px; }
:fullscreen footer { height: 30px; }
:-webkit-full-screen a.expand { bottom: 5px; }
:-moz-full-screen a.expand { bottom: 5px; }
:fullscreen a.expand { bottom: 5px; }
/* EXPAND */
您不能在一行中排序更多的div,否则将不起作用(我不知道为什么,浏览器会忽略代码的某些原因)
而且它的工作非常完美!F11原封不动,Chrome,Firefox在本机全屏API模式下完美调整图像大小,CSS代码仅为全屏修改 您应该使用插件提供的来警告全屏状态的更改:
$(document).on("fullscreenchange", function() {
if($(document).fullScreen()){
//Just went into fullscreen
$("#header-container, #footer-container").addClass('toggle-display');
$("header, footer").addClass('toggle-height');
$("a.expand").addClass('toggle-bottom');
}else{
//Just exit fullscreen
$("#header-container, #footer-container").removeClass('toggle-display');
$("header, footer").removeClass('toggle-height');
$("a.expand").removeClass('toggle-bottom');
}
});
您甚至可以在没有if/else的情况下执行此操作,并使用justtoggleclass而不是add/remove为什么不绑定插件提供的fullscreenchange
事件来检查全屏状态何时更改?在你的链接中有记录感谢你的帮助!它解决了这个问题,但创建了另一个(垂直图像高度.js在这种情况下不起作用)。你能帮我吗?我更新了我的问题。@user1442219你不能在fullscreenchange
事件中调用atmeretezo()
?