[webkit-help] How to use DOMRange to select a paragraph's outer HTML?

Alexander Shulgin alexander.shulgin at yessoftware.com
Mon May 17 10:00:49 PDT 2010


Hi,

I'm new to the list, so hope this is the right place for my question. 
Feel free to redirect me to more appropriate one if it's not.

In the content editing mode is there a way to programmatically select 
_outer_ representation of a HTML tag, e.g. <p>, so that when we call one 
of the replaceSelectionWith*() methods, the selected tag is replaced as 
a whole?

I'm trying to use setSelectedDOMRange() like this:

DOMRange* range = ...;
range->setStartBefore(paragraphToReplace);
range->setEndAfter(paragraphToReplace);

webView->replaceSelectionWithNode(replacementParagraph);

But this has unpleasant side effects: any adjacent tags are merged into 
the newly inserted paragraph.  And this can be quite annoying as it 
would happily convert any adjacent <h1> into <span>, while preserving 
the look, but not semantics of HTML.

I understand this happens because in its internals WebKit uses visual 
caret positions, so selecting past the end of a <p> contents inevitably 
wraps upto contents of any following tag.

But what can I do about that?  I cannot seem to find a workaround even 
after stepping through WebCore code for a few days now.

Any help is greatly appreciated!
--
Alex


More information about the webkit-help mailing list