に、私はこのコードを使用していない:アヤックスとのJavascriptがFFで動作しますが、IE
<script type="text/javascript">
var id = <?php if(is_numeric($_GET['id'])) print $_GET['id']; else print "0"; ?>;
var startid = id+1;
var end = false;
// function for loading one row
function getRow(rowid)
{
//$.get("unhandled_one_row.php?id=" + rowid, function(data){ if(data!="\n") $('#dash_table > tbody').append(data); else { } });
function HttpRequest(url){
var pageRequest = false; //variable to hold ajax object
/*
if (!pageRequest && typeof XMLHttpRequest != 'undefined')
pageRequest = new XMLHttpRequest();
*/
if(window.ActiveXObject) // Internet Explorer
{
try
{
pageRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
pageRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else // Firefox, Opera, Safari
{
pageRequest = new XMLHttpRequest();
}
if (pageRequest){ //if pageRequest is not false
pageRequest.open('GET', url, false); //get page synchronously
pageRequest.send(null);
embedpage(pageRequest);
}
}
function embedpage(request){
//if viewing page offline or the document was successfully retrieved online (status code=200)
if (window.location.href.indexOf("http")==-1 || request.status==200)
{
if(request.responseText != "\n") document.write(request.responseText);
else end = true;
}
}
HttpRequest("unhandled_one_row.php?id=" + rowid);
}
// function for deleting a row
function RemoveRow(obj)
{
var rws;
obj=document.getElementById(obj);
rws=obj.getElementsByTagName('TR');
obj.removeChild(rws[rws.length-1]);
}
// row loading loop
do
{
getRow(id++);
} while(!end && document.getElementById("dash_table").clientHeight < document.body.clientHeight - 100);
// avaiable height exceed control
// deletes one row if the height was exceeded
if(document.getElementById("dash_table").clientHeight >= document.body.clientHeight - 100)
{
RemoveRow('dash_table');
id--;
}
の利用できる高さとテーブルの高さを比較しながら動的にテーブルをロードすることになって行毎れます使用可能な高さに達すると、ループが停止します。このコードはG.ChromeのFFではうまく動作しますが、IEではループが無限に繰り返されます。
なぜですか?
うーん皆のための教訓とするとありがとう。しかし、私はいくつかのテストを行ったので、AJAX呼び出しは問題ではありません。問題は、このループでテーブルの高さをチェックすることです: 'do { // getRow(id ++); document.write(testrow); id ++; IEでは、表が動的にクライアントのHeight属性をインクリメントしないように見えます(FFまたはGのときは、このように表示されます)。クロムそれは)。あなたはIEでそれを修正する方法を知っていますか? –