2017-08-07 31 views
0

ポップアップdivを表示するサンプルhtmlページを作成しました。これはFirefoxでは動作しますがIEでは動作しません。それは関数が定義されていないと言いました。ここでIE11でJavascript関数が定義されていません

は私のページです:
とエラーメッセージが " '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

可能な複製(https://stackoverflow.com/questions/36016327/how-to-make-promises- work-in-ie11) –

+1

IE11は 'async' /' await'構文をサポートしていません。 ECMAScript 5と一部のECMAScript 6機能のみをサポートしています。 – Dai

答えて

1

あなたは:hoverを使用して、純粋なCSSを使用することができ、この効果のためにJavaScriptを必要としません擬似クラスと+隣接要素セレクター:[約束はIE11で動作するようにする方法]の

#image_div { 
    display: none; 
} 

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

は私がJaromanda Xで述べたように約束の機能は全くのJavascriptライブラリせずにIEとの互換性はありません信じて https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise

+1

はい。 IEは約束をサポートしていません。 http://caniuse.com/#search=promises – Rob

+1

正しい。約束はIE 11よりはるかに新しい技術です。代わりにsetTimeoutを使うことをお勧めします。 –

+1

この回答は非常に誤解を招くもので、IE11 **が適切な図書館で約束を使用することができるため、約束を使用することは問題ではありません。しかし、async/awaitとarrow notation =>はIE11ではサポートされていません。これはjavascriptの構文変更であり、 "組み込み"機能の欠如ではありません。 –

関連する問題