IE designMode显示display:none Divs

时间:2008-12-31 21:15:22

标签: javascript jquery internet-explorer tinymce designmode

我已就此做了大量研究,但我无法解决这个问题。在开启TinyMCE实例之前,我有一个包含几个Div的Div,我想隐藏它。

我是通过jQuery做的 -

$(".drop").hide()

这很好用,除Trident(IE)之外的每个浏览器引擎都隐藏它们。如果我检查IE中的元素,则css表示“display:none”。

我发现了一些文章和笔记,关于这是IE的一个功能,以显示这些元素,包括MSDN上的这个元素:http://msdn.microsoft.com/en-us/library/aa770023(VS.85).aspx

问题在于我需要隐藏它们。有什么想法吗?

3 个答案:

答案 0 :(得分:4)

这是因为在一个可编辑的元素中,IE会创建所有内容,包括使用display:none隐藏的元素,可编辑。除了从页面的DOM中删除要隐藏的元素之外,你无能为力。

这里提到IE的这种行为:http://msdn.microsoft.com/en-us/library/aa770023%28VS.85%29.aspx

答案 1 :(得分:0)

您可以尝试应用将显示设置为非空的样式,例如:

.drop
{
    display: block; // or inline
}

这听起来像是由于IE需要元素“有布局”才能对其进行某些操作,隐藏其中之一。给定显示类型块的元素应该具有布局,即占用空间并强制浏览器重新组织它周围的兄弟元素。

答案 2 :(得分:0)

据我所知,tinyMCE使用iframe编辑并在iframe中启用编辑模式,因此如果您在加载tinyMCE之前处于编辑模式,则确定必须将外部文档置于编辑模式。

为了澄清,您是否试图影响iframe的内部,或者是包含display:none

的tinyMCE加载内容

如果您要将带有display:none的内容加载到tinyMCE中,则可能需要执行某种混乱的解决方法,在加载时删除节点并尝试在保存时将它们重新插入相同的位置。

我能看到的唯一好处是,如果在其他浏览器中,您只需选择节点两侧的文本就会在不知不觉中删除隐藏节点。<​​/ p>