Bug 28472 - webkit can not unformat super- and sub-script containing BR
Summary: webkit can not unformat super- and sub-script containing BR
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: HTML Editing (show other bugs)
Version: 528+ (Nightly build)
Hardware: Mac OS X 10.5
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-08-19 13:09 PDT by Philip Tucker
Modified: 2017-07-18 08:29 PDT (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Philip Tucker 2009-08-19 13:09:43 PDT
The latest version of WebKit (532) fixed a bug where contentEditable could not unformat SUB and SUPER tags. But it still fails when the text contains a BR. e.g.,

For this HTML ...

<div id="editor" contenteditable=true>super<sup>script<img></sup></div>

... if I select "script" and execCommand("superscript"), it works correctly, it simply removes the super tags. But if I change the HTML to this ...

<div id="editor" contenteditable=true>super<sup>script<br></sup></div>

... "script" stays superscripted, and the underlying HTML becomes this ugliness ...

<div id="editor" contenteditable=true>super<sup><span class=Apple-style-span style="vertical-align: baseline;">script</span><br></sup></div>

Example:

http://www.plexode.com/cgi-bin/eval3.py#ht=%3Cdiv%20id%3D%22editor%22%20contenteditable%3Dtrue%3Esuper%3Csup%3Escript%3Cbr%3E%3C%2Fsup%3E%3C%2Fdiv%3E%0A&ohh=1&ohj=1&jt=var%20div%20%3D%20document.getElementById('editor')%3B%0A%0A%2F%2F%20Change%20this%20to%20select%20a%20range%0AselectRange(div%2C%201%2C%20div%2C%202)%3B%0A%0A%2F%2F%20Change%20this%20to%20run%20execCommand%0Adocument.execCommand('superscript'%2C%20false%2C%20null)%3B%0A%0Afunction%20selectRange(startNode%2C%20startOffset%2C%20endNode%2C%20endOffset)%20%7B%0A%20%20var%20sel%20%3D%20window.getSelection()%3B%0A%20%20var%20range%20%3D%20null%3B%0A%20%20try%20%7B%0A%20%20%20%20range%20%3D%20sel.getRangeAt(0)%3B%0A%20%20%7D%20catch(ex)%20%7B%0A%20%20%20%20range%20%3D%20document.createRange()%3B%0A%20%20%7D%0A%20%20range.setStart(startNode%2C%20startOffset)%3B%0A%20%20range.setEnd(endNode%2C%20endOffset)%3B%0A%20%20sel.removeAllRanges()%3B%0A%20%20sel.addRange(range)%3B%0A%7D&ojh=1&ojj=1&ms=100&oth=0&otj=0&cex=1
Comment 1 Aryeh Gregor 2011-08-19 13:11:00 PDT
Cannot reproduce in Chrome 15.0.849.0 dev.  It works as expected for me.  Actually, it goes a bit further and removes the <sup> entirely, not even leaving the part around the unselected <br>, but I guess that's due to selection normalization.