有没有其他人遇到过这个问题并得到了满意的解决方案?
基本上我有一个非常复杂的 Web 应用程序,它在 IE9 Quirks 模式下(目前无法切换 doctype)通过 jQuery 动态插入的特定类型的元素无法完全呈现。它参与页面布局,但元素本身不出现。
有时 5 秒后,有时 30 秒后,有时甚至更晚,元素最终会神奇地出现。
我使用了 F12 开发工具(无论是否单击“开始调试”),它确实显示了有问题的元素,并且它没有显示蓝色边框指示器(因为它显然没有被渲染,没有呈现它的边框出现,这是合乎逻辑的)。
setTimeout()
临时有效的解决方法是在嵌套链中动态删除元素并重新插入。然后我必须重新安装点击事件处理程序。
像这样:
if (isQuirksMode()) {
setTimeout(function() {
var parent = jqelement.parent();
var removed = jqelement.remove();
setTimeout(function() {
parent.append(removed);
removed.children('input').click(clickcallback);
},0);
},0);
}
jqpage.append(jqelement);
此代码将强制插入元素,从 DOM 中删除,然后再次插入,然后它似乎可以正确显示。
这样做的原因是我尝试添加和删除一个类,希望它会触发重新渲染,但这并没有改变任何行为。
我的问题是,这种行为是否对任何人都敲响了警钟,你是否能够想出一种更便宜的方式让它表现出来?