0

有没有其他人遇到过这个问题并得到了满意的解决方案?

基本上我有一个非常复杂的 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 中删除,然后再次插入,然后它似乎可以正确显示。

这样做的原因是我尝试添加和删除一个类,希望它会触发重新渲染,但这并没有改变任何行为。

我的问题是,这种行为是否对任何人都敲响了警钟,你是否能够想出一种更便宜的方式让它表现出来?

4

1 回答 1

0

一次性将元素作为字符串注入比将它们单独注入 DOM 快得多。

在字符串中构建它 - 用于innerHTML插入。

于 2013-09-27T20:00:19.067 回答