2017-08-07 42 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中的語法更改,而不是缺少「內置」功能 –