Ajax 直到鼠标点击,动态元素才会出现在IE8中

Ajax 直到鼠标点击,动态元素才会出现在IE8中,ajax,jquery,internet-explorer-8,Ajax,Jquery,Internet Explorer 8,我有一个返回搜索结果的Ajax请求,我正在动态创建DOM元素来显示这些结果。除了IE8之外,在我测试过的所有浏览器中,这都能正常工作 请求返回正常,JavaScript成功运行,元素正在创建中,但元素没有显示在页面中。它们仅在鼠标单击页面上的某个位置后出现 我运行了一个快速测试,在没有Ajax请求的情况下运行回调代码,它的行为与预期的一样。所以我想知道这是否与IE8管理回调线程的方式有关。有没有其他人见过这样的行为,或者对此有什么见解 回调基本上非常简单。我复制了以下内容: function c

我有一个返回搜索结果的Ajax请求,我正在动态创建DOM元素来显示这些结果。除了IE8之外,在我测试过的所有浏览器中,这都能正常工作

请求返回正常,JavaScript成功运行,元素正在创建中,但元素没有显示在页面中。它们仅在鼠标单击页面上的某个位置后出现

我运行了一个快速测试,在没有Ajax请求的情况下运行回调代码,它的行为与预期的一样。所以我想知道这是否与IE8管理回调线程的方式有关。有没有其他人见过这样的行为,或者对此有什么见解

回调基本上非常简单。我复制了以下内容:

function catchResults(response) {
    var contentBlock = document.getElementById('divResults');
    var divResults = document.createElement('div');
    var txt = document.createTextNode("Results");
    divResults.appendChild(txt);
    contentBlock.appendChild(divResults);
}
我正在使用JQuery.ajax进行调用。 我在FireFox和Chrome中看到了正确的行为


谢谢你的帮助

不久前我在IE8上遇到了这个问题

我认为这可能是IE8没有重新呈现相关元素的问题。 确认这一点的一个简单方法是向父元素添加一个类,然后将其删除。这将触发IE8重新呈现元素

如果contentBlock是父元素,则可以使用以下内容进行测试:

Javascript版本:

// Variable storing the test class name
var testClass = "testClass";
// Add test class to element
contentBlock.className += " "+testClass;
// Remove test class from element
var reg = new RegExp('(\\s|^)'+testClass+'(\\s|$)');
contentBlock.className=contentBlock.className.replace(reg,' ');
// Variable storing the test class name
var testClass = "testClass";
// Add test class to element and then remove it 
$('#divResults').addClass(testClass).removeClass(testClass);
jQuery版本:

// Variable storing the test class name
var testClass = "testClass";
// Add test class to element
contentBlock.className += " "+testClass;
// Remove test class from element
var reg = new RegExp('(\\s|^)'+testClass+'(\\s|$)');
contentBlock.className=contentBlock.className.replace(reg,' ');
// Variable storing the test class name
var testClass = "testClass";
// Add test class to element and then remove it 
$('#divResults').addClass(testClass).removeClass(testClass);
只需将它放在函数的末尾,然后再追加子函数即可。希望这能解决你的问题


参考资料:

我遇到了一个类似问题的答案——元素没有显示出来。如果我在开发者工具窗口中更改了它的任何属性,它就会出现。这项技术解决了问题。罗斯科,你是个天才。这就像一个符咒。你知道关于这个问题的任何文件吗?这是有意的吗?谢谢你的帮助!很高兴听你这么说。我也记不起在哪里看到这个bug了抱歉。我很确定这不是故意的行为。谢谢!你的回答真的帮助了我!这是一个长期存在的问题的绝佳答案。谢谢