我有遗留项目,我在浏览器兼容性方面遇到问题。它在IE 7,8,9和10兼容模式下在IE10上运行完美,但在模式IE10页面由于某种原因重新加载。
此页面的脚本只是动态地执行xml-request并在特定框中加载结果。
function sendXmlRequest( xmlRequest )
{
var conn;
conn = new ActiveXObject("MSXML2.XMLHTTP");
var xmlStatusElement = document.getElementById("xmlStatus");
xmlStatusElement.innerHTML = 'Sending request...';
var xmlRequestElement = document.getElementById("xmlRequest");
xmlRequestElement.innerHTML = '';
xmlRequestElement.innerHTML = "<pre>" + escapeXml( xmlRequest ) + "</pre>";
var indicatorImage = document.getElementById( "indicatorImage" );
indicatorImage.style.display="inline";
conn.open("POST","/some_url",true );
conn.onreadystatechange = function( aEvt )
{
var xmlResponseElement = document.getElementById("xmlResponse");
var loadButton = document.getElementById("loadButton");
if(conn.readystate == 2)
{
xmlResponseElement.innerHTML = "<pre>Waiting for response...</pre>";
}
else if ( conn.readystate == 3 )
{
xmlResponseElement.innerHTML = "<pre>Receiving for response...</pre>";
}
else if ( conn.readystate == 4 )
{
var xmlResponse = conn.responseText;
xmlResponseElement.innerHTML = '';
xmlResponseElement.innerHTML = "<pre>" + escapeXml( xmlResponse ) + "</pre>";
indicatorImage.style.display = "none";
xmlStatusElement.innerHTML = conn.statusText + " (" + conn.status + ")";
loadButton.disabled = false;
}
else
{
loadButton.disabled = true;
}
};
conn.send( xmlRequest );
}
所以问题是在执行具有条件conn.readystate == 4
的块之后,在IE10模式下会突然重新加载页面。在IE开发人员窗口中调试的其他模式下,脚本的执行在此块之后停止,但是在IE10模式的情况下调试到第三方脚本coolmenu 4.06(2002),其包括在页面顶部,并开始重建菜单,因为它执行在加载页面期间。所以重新加载已经由一些隐藏事件触发,我无法捕获在调试下触发的内容。
那么有人可以告诉我为什么在IE10重载中执行(我说的确切原因,而不只是关于版本之间的IE差异的一般短语)?或者建议一些调试工具,它将允许我捕获重新加载的触发器,所以我会找到重新加载的原因并修复它,所以在IE10模式下不会重新加载。