2017-08-07 36 views
0

我写了一个示例html页面来显示一个弹出div,它在firefox中工作,但不在IE中。它说这个函数是不确定的。Javascript函数在IE11中是undefined

这里是我的网页:
和错误消息是 “'show_popup_div未定义”

<html> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=unicode" /> 

    <script type="text/javascript"> 

     function show_popup_div() { 
      var imageDiv=document.getElementById("image_div"); 
      var switchA=document.getElementById("switch_a"); 
      imageDiv.style.display='block'; 
     } 

     async function hide_popup_div() { 
      var imageDiv=document.getElementById("image_div"); 
      await sleep(5000); 
      imageDiv.style.display='none'; 
     }   

     function sleep(ms) { 
      return new Promise(resolve => setTimeout(resolve, ms)); 
     } 

    </script> 
</head> 
<body> 

    <a id="switch_a" onmousemove="show_popup_div()" onmouseout="hide_popup_div()">click me to open a image</a> 
    <div id="image_div"> 
     <img id="image" src="http://www.rd.com/wp-content/uploads/sites/2/2016/02/06-train-cat-shake-hands.jpg" usemap="#map1"/> 

    </div> 

</body> 

我怎样才能解决这个问题?谢谢。

+0

的可能的复制[如何做出承诺,在IE11工作(https://stackoverflow.com/questions/36016327/how-to-make-promises- work-in-ie11) –

+1

IE11不支持'async' /'await'语法。它仅支持ECMAScript 5和一些ECMAScript 6功能。 – Dai

回答

1

你并不需要JavaScript的这种效果,你可以使用:hover使用纯CSS伪类和+相邻元素选择:

#image_div { 
    display: none; 
} 

#switch_a:hover + #image_div { 
    display: block; 
} 
2

我相信,通过Jaromanda X.提到无极功能不兼容IE都没有一个JavaScript库 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise

+1

是的。 IE不支持Promises。 http://caniuse.com/#search=promises – Rob

+1

正确。 Promise是比IE 11更新颖的技术。我建议使用setTimeout。 –

+1

这个答案很具误导性,它不是使用Promise这个问题,因为IE11 **可以使用Promises和适当的库。但是,IE11不支持async/await和arrow notation =>,因为这是javascript中的语法更改,而不是缺少“内置”功能 –