Javascript 第一段代码在Firefox、Chrome、IE和;边缘,但IE&;提前运行第二块边缘
以下两段代码在Firefox和Chrome以及IE和Edge中都可以正常工作。第一个块在单击时展开图像以填充屏幕,第二个块在第二次单击时再次收缩图像 问题在于,尽管第一块代码在所有四种浏览器中都会扩展图像,但IE&Edge(与Firefox&Chrome不同)也会立即运行第二块代码,而无需等待第二次单击。如何阻止这两个浏览器这样做 我试着在每个块的末尾加一个分号,但没有用 部分代码如下: 第一块-将图像扩展到全屏Javascript 第一段代码在Firefox、Chrome、IE和;边缘,但IE&;提前运行第二块边缘,javascript,Javascript,以下两段代码在Firefox和Chrome以及IE和Edge中都可以正常工作。第一个块在单击时展开图像以填充屏幕,第二个块在第二次单击时再次收缩图像 问题在于,尽管第一块代码在所有四种浏览器中都会扩展图像,但IE&Edge(与Firefox&Chrome不同)也会立即运行第二块代码,而无需等待第二次单击。如何阻止这两个浏览器这样做 我试着在每个块的末尾加一个分号,但没有用 部分代码如下: 第一块-将图像扩展到全屏 var globalreqfullscreen = getreqfullscree
var globalreqfullscreen = getreqfullscreen()
document.addEventListener('click', function(e){
var target = e.target
if (target.classList.contains('canfullscreen')){
globalreqfullscreen.call(target)
}
}, false)
块二-收缩扩展图像
var globalexitfullscreen = getexitfullscreen()
document.addEventListener('click', function(e){
var target = e.target
if (target.classList.contains('canfullscreen')){
globalexitfullscreen.call(document)
}
}, false)
感谢您连夜发布的三条评论:
我还尝试了一种切换方法,将块3替换为块1和块2。这将在所有四种浏览器中展开,但不会在第二次单击时关闭。然而,如果我去掉倒数第二个},那么Firefox和Chrome仍然会通过单独的点击来扩展和收缩,但是IE和Edge会随着最初的点击而扩展和收缩。我似乎绕了一圈:-(
块3-切换方法
var globalreqfullscreen = getreqfullscreen() // get supported ver of requestFullscreen()
var globalexitfullscreen = getexitfullscreen() // get supported ver of document.exitFullscreen()
var globalfullscreenelement = fullscreenelement() // get supported ver of document.fullscreenElement()
document.addEventListener('click', function(e){
var target = e.target
if (target.classList.contains('canfullscreen')){
if (globalfullscreenelement == null){ // if browser is currently not in full screen
globalreqfullscreen.call(target)
}
else{
globalexitfullscreen.call(document)
}
}
},错)
更新:我现在有了一个适用于所有四种浏览器的切换设置。将更新后,我用它支付左右多一点。谢谢大家,Don点击处理程序中没有任何东西会限制它们不能同时运行,因此理论上IE的行为是正确的。你能在第二个代码段的运行位置发布更多上下文吗?因为你试图实现一种切换行为,可以用一种切换函数来反映这一点,也就是说,单个函数检查图像(或标志)的状态,然后展开或收缩图像。这种方法不仅可以解决您的问题,而且会更加优雅(至少在我看来是这样)。在block3中,您需要在每次调用时更新FSElement,因为您将此道具包装在自定义函数中,所以如果(fullscreenelement()),也要这样做。