contenteditable = false contenteditable = true块在IE8中仍然可以编辑

Gez*_*zim 31 html contenteditable internet-explorer-8

我有以下HTML打算确保内部span不可编辑.这适用于其他浏览器,但不适用于IE8.

<div contenteditable="true">
  Luke, I am your father.
  <span contenteditable="false">I'm your son?! Ewww!</span>
  Don't speak back to me!
</div>
Run Code Online (Sandbox Code Playgroud)

这是一个JSFiddle来说明这一点(使用IE8来测试它):http://jsfiddle.net/haxhia/uUKPA/3/.

我如何确保IE8也能正确处理?

Gez*_*zim 34

好吧,我已经发现了答案,就像发现青霉素一样.

你看,这个代码玩弄,我错误地设置contenteditabletruespan,瞧!有效!

因此,要span在一个可信的div中创建一个非满足的,你只需将其contenteditable属性设置为true!

<div contenteditable="true">
  Luke, I am your father.
  <span contenteditable="true">I'm your son?! Ewww!</span>
  Don't speak back to me!
</div>
Run Code Online (Sandbox Code Playgroud)

这是要演示的文件(使用IE8打开它):https://codepen.io/hgezim/pen/qMppLg.

最后,我没有发布问题来获得投票(虽然,他们不会受伤!),但由于解决方案太荒谬了,我没有在这里找到它,我认为有人可能会发现节省时间.

  • @John,同时人们今天必须解决这个问题.你真的认为微软会在IE8中解决这个问题吗?! (14认同)
  • Upvoted,因为这正是Microsoft在Outlook Web Access的"To Addresses"字段中实现其可信任div的方式.在IE中,内部跨度(我们不希望编辑)设置为true,在Chrome中,它设置为false.两者都有效,IE浏览器没有意义. (6认同)
  • 抱歉,不得不对此进行投票,因为这种行为将被解释为错误并最终(即使需要数年)才能更改,因此第二个元素仍然可以编辑. (2认同)

小智 18

在IE上contenteditable ="true"内部contenteditable ="true"(使其不可编辑)的问题是双击内部元素使其可编辑

Grandparent tag as contenteditable true

Parent tag as contenteditable false

Child tag as contenteditable false
Run Code Online (Sandbox Code Playgroud)

子标记的内容无法编辑

    <ul contenteditable="true">
        <li>By default, this content is editable via its 
        inherited parent elements value.</li>

    <li contenteditable="false" ><span contenteditable="false">This content is     
    <b>not</b> 
    editable for sure</span></li>
    </ul>
Run Code Online (Sandbox Code Playgroud)

JSFiddle示例

  • 即使这个解决方案也不是密不透风的.使用箭头键仔细导航,可以将插入符号放入不可编辑的元素中,并随意编辑.要重现,请转到小提琴,单击第二行,然后按下键.这会将你的插入符号放入本应该不可穿透的第三行.在IE11中测试过; 尽量不要为旧版本而烦恼. (3认同)