2011-01-27 21 views
0

私のコードで奇妙な問題が発生しました。 xmlHttpRequestを介して受信したコンテンツは、リンクをクリックした後、IE8に表示されません。リンクをクリックすると、マウス/カーソルを移動した後にのみ表示されます。すぐにIE8にAJAXレスポンスが表示されない

<html> 
    <head> 
     <script language="javascript"> 
     var xmlHttpfunction; 

     function ShowHint(str,id,currentid,count) 
     { 
      for(i = 0; i < count; i++) 
      { 
       if (i == currentid) 
       { 
        cellImg(i,'images/head_on.jpg'); 
       } 
       else 
       { 
        cellImg(i,'images/btn_img.jpg'); 
       } 
      } 
      xmlHttp = GetXmlHttpObject(); 

      if (xmlHttp == null) 
      { 
       alert ("Browser does not support HTTP Request"); 
       return; 
      } 

      var url = "myurl.php"; 
      url = url+"?id="+id; 
      xmlHttp.onreadystatechange = stateChanged; 
      xmlHttp.open("GET",url,true); 
      xmlHttp.send(null); 
     } 

     function cellImg(idCell, imgName) 
     { 
      document.getElementById(idCell).style.background = "url(" + imgName + ")"; 
     } 

     function stateChanged() 
     { 
      if (xmlHttp.readyState === 1) 
      { 
       document.getElementById("element").innerHTML = "<p align='center'><img src='images/wait.gif'></p>"; 
      } 
      else if (xmlHttp.readyState === 4) 
      { 
       document.getElementById("element").style.display = "block"; 
       document.getElementById("element").innerHTML = xmlHttp.responseText; 
      } 
     } 

    </script> 
    </head> 
    <body> 
    <div id="navigation"> 
     <ul > 
      <li id=1 > 
       <a href="#" onclick="ShowHint('menu',42,1,18);return false;"> 
       Item 1 
       </a> 
      </li> 
      <li id=2 > 
       <a href="#" onclick="ShowHint('menu',11,2,18);return false;"> 
       Item 2 
       </a> 
      </li> 
      <li id=3 > 
       <a href="#" onclick="ShowHint('menu',12,3,18);return false;"> 
       Item 3 
       </a> 
      </li> 
     </ul> 
    </div> 
    <div class="element" id="element"> 
    </div> 
    </body> 
</html> 

上記はFirefox、Safari、Chrome、Operaで動作します。しかしIE8では、リンクをクリックした後にカーソル移動がなければ、コンテンツは表示されません(div id = "element"のinnerHTMLにロードされます)。

IE8のスクリプトデバッガ(ツール - > DeveloperTools)で警告を出してみましたが、問題の原因を見つけることができませんでした。

誰でも私にこれを助けてくれますか?

多くのおかげで、おそらくAJAX呼び出しからresponseTextは、キャリッジリターンで起動しているかどうかを確認するために sgullap

答えて

0

チェック。私は今日も同様の問題を抱えていました(これはどのように私がグーグルでこの質問を見つけたか)、私のHTMLコードが誤ってajax呼び出しのターゲットページの空白行で始まっていることがわかりました。その余分な行を削除すると、innerHTMLが正しく設定されて表示されました。

なぜ私はdivに割り当てられたinnerHTMLをIEに表示させないようにしたのか分かりませんが、ajaxを通して取得されたHTML出力の先頭に空白行が表示されないように注意してください。

関連する問題