Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 第一段代码在Firefox、Chrome、IE和;边缘,但IE&;提前运行第二块边缘_Javascript - Fatal编程技术网

Javascript 第一段代码在Firefox、Chrome、IE和;边缘,但IE&;提前运行第二块边缘

Javascript 第一段代码在Firefox、Chrome、IE和;边缘,但IE&;提前运行第二块边缘,javascript,Javascript,以下两段代码在Firefox和Chrome以及IE和Edge中都可以正常工作。第一个块在单击时展开图像以填充屏幕,第二个块在第二次单击时再次收缩图像 问题在于,尽管第一块代码在所有四种浏览器中都会扩展图像,但IE&Edge(与Firefox&Chrome不同)也会立即运行第二块代码,而无需等待第二次单击。如何阻止这两个浏览器这样做 我试着在每个块的末尾加一个分号,但没有用 部分代码如下: 第一块-将图像扩展到全屏 var globalreqfullscreen = getreqfullscree

以下两段代码在Firefox和Chrome以及IE和Edge中都可以正常工作。第一个块在单击时展开图像以填充屏幕,第二个块在第二次单击时再次收缩图像

问题在于,尽管第一块代码在所有四种浏览器中都会扩展图像,但IE&Edge(与Firefox&Chrome不同)也会立即运行第二块代码,而无需等待第二次单击。如何阻止这两个浏览器这样做

我试着在每个块的末尾加一个分号,但没有用

部分代码如下:

第一块-将图像扩展到全屏

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()),也要这样做。