<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Jul 25, 2010, at 1:03 AM, Ryosuke Niwa wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Are there Apple or third-party products that heavily rely on the current implementation of RemoveFormatCommand?</div><div>If not, I want to completely re-implement&nbsp;RemoveFormat to match the behavior of other browsers.</div>

<meta charset="utf-8"><div><br></div><div><a href="http://msdn.microsoft.com/en-us/library/aa220275(office.11).aspx">In MSDN</a>,&nbsp;RemoveFormat is described as:</div><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">

Removes the font and character formatting from the current selection.</blockquote><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">

The following code removes all formatting from the selected text.</blockquote><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">

<br></blockquote><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">

ActiveDocument.execCommand "removeformat</blockquote><div><br></div><div><a href="https://developer.mozilla.org/en/rich-text_editing_in_mozilla">In MDC</a>, it's described as:</div><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">

Removes all formatting from the current selection.</blockquote><div><br></div><div>However, <a href="http://trac.webkit.org/browser/trunk/WebCore/editing/RemoveFormatCommand.cpp#L49">our current implementation</a> deletes all selected contents&nbsp;and type them back in,</div>

<div>losing all sorts of elements such as&nbsp;input, img, hyper links,&nbsp;tables, lists, and etc...</div><div><br></div><div>There are two options to resolve this problem:</div><div><ol><li>Store all elements deleted and their positions and insert (restore) them back.</li>

<li>Remove format more gracefully by walking through the DOM and removing stylesheets and presentational elements.</li></ol></div><div>I want to re-implement RemoveFormat because I don't think option 1 really is an option.</div>

</blockquote><br></div><div>I think the key question here is what counts as as "formatting". That needs to be determined empirically by testing other browsers, not just by reading their docs.</div><div><br></div><div>Here are some tricky questions:</div><div><br></div><div>- Does font-weight: bold count as "formatting"?</div><div>- Does the &lt;b&gt; element's default bold style count as "formatting"?</div><div><div>- Does the &lt;b&gt; element itself count as "formatting"?</div></div><div>- Does display: block count as "formatting"?</div>- Does the &lt;p&gt; element's display: block style count as "formatting"?<div>- Does the &lt;p&gt; element itself count as formatting?</div><div><br></div><div>You could make a rule that only non-default styles count as "formatting", but it would seem weird if "RemoveFormat" allowed the selection to retain bold or italic text, so I wonder if other browsers actually do that.</div><div><br></div><div>You could ask similar questions about tables and lists. In particular, do we preserve table and list elements with their default styles, but CSS table or list layout properties are not allowed?</div><div><br></div><div>I think with information based on testing other browsers, and test cases demonstrating this behavior, we could make a more informed decision.</div><div><br></div><div>Regards,</div><div>Maciej</div><div><br></div><div><br></div></body></html>