Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.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 AddEventListener弹出窗口不';I don’我不在IE11工作_Javascript - Fatal编程技术网

Javascript AddEventListener弹出窗口不';I don’我不在IE11工作

Javascript AddEventListener弹出窗口不';I don’我不在IE11工作,javascript,Javascript,您好,我是javascript新手,我正在使用es6编写代码 基本上,我对IE for addEventListener有一个问题,这个想法是,当我们点击图像时,弹出窗口出现,它在chrome上工作,但在IE中不工作。我知道已经有相关的话题了,例如: 我试图实现它,但它似乎不起作用,我想我需要了解更多如何实现它与我的代码,如果有人可以帮助,我会非常感激 consttogglebutton=document.querySelector('.jsModalToggle'); const conta

您好,我是javascript新手,我正在使用es6编写代码

基本上,我对IE for addEventListener有一个问题,这个想法是,当我们点击图像时,弹出窗口出现,它在chrome上工作,但在IE中不工作。我知道已经有相关的话题了,例如:

我试图实现它,但它似乎不起作用,我想我需要了解更多如何实现它与我的代码,如果有人可以帮助,我会非常感激

consttogglebutton=document.querySelector('.jsModalToggle');
const container=document.querySelector('.modal yt container');
toggleButton.addEventListener('click',_=>{
document.body.classList.add('modal-yt-is-open')
})
container.addEventListener('click',e=>{
如果(!e.target.closest('.modal yt video')){
document.body.classList.remove('modal-yt-is-open')
}
})
。安装视频调出文本容器{
填充:20px;
}
.安装视频标注文本p{
字号:1em;
线高:16px;
}
.安装视频标注文本.绿色\u btn{
利润率:20px0px0;
}
.安装视频标注文本h2{
线高:45px;
字体大小:32px;
}
.安装视频标注img iframe{
高度:300px;
}
.集装箱{
位置:固定;
显示器:flex;
证明内容:中心;
对齐项目:居中;
排名:0;
右:0;
底部:0;
左:0;
不透明度:0;
z指数:-1;
背景色:rgba(0,0,0,0.78);
}
.modal yt已打开。modal yt容器{
z指数:9999;
不透明度:1;
}
.莫代尔yt视频{
显示器:flex;
证明内容:中心;
对齐项目:居中;
宽度:45%;
}
图像点击

它要求你做三件事:事件、元素、功能

var event = "click"
var element = document.querySelector('.jsModalToggle');
var myFunc = function(e){

        if (!e.target.closest('.modal-yt-video')) {
            document.body.classList.remove('modal-yt-is-open')
        }
}
然后将所有内容传递给函数

addEvent(event, element, myFunc);

没有版本的Internet Explorer支持箭头功能。除了
const
let
之外,所有ES6 Javascript功能也是如此

因此,这在任何情况下都不起作用,即:

toggleButton.addEventListener('click', _ => {
    document.body.classList.add('modal-yt-is-open')
})

container.addEventListener('click', e => {
    if (!e.target.closest('.modal-yt-video')) {
        document.body.classList.remove('modal-yt-is-open')
    }
})
相反,请使用ES5功能:

toggleButton.addEventListener('click', function(_) {
    document.body.classList.add('modal-yt-is-open')
})

container.addEventListener('click', function(e) {
    if (!e.target.closest('.modal-yt-video')) {
        document.body.classList.remove('modal-yt-is-open')
    }
})
下一个问题是,没有任何版本的Internet Explorer支持
HTMLElement.prototype.closest()
。如果要使用它,您需要对其进行多边形填充:

if (!Element.prototype.matches) {
  Element.prototype.matches = Element.prototype.msMatchesSelector || 
                              Element.prototype.webkitMatchesSelector;
}

if (!Element.prototype.closest) {
  Element.prototype.closest = function(s) {
    var el = this;

    do {
      if (Element.prototype.matches.call(el, s)) return el;
      el = el.parentElement || el.parentNode;
    } while (el !== null && el.nodeType === 1);
    return null;
  };
}

谢谢你的回答,现在我明白了它的工作原理,我很感激,很抱歉我只有机会回答