Bug 4609

Summary: window.getSelection().toString() is undefined (range object returned from window.getSelection() is useless)
Product: WebKit Reporter: Berndt Jung <berndtj>
Component: HTML EditingAssignee: Justin Garcia <justin.garcia>
Status: RESOLVED FIXED    
Severity: Major CC: ap
Priority: P2    
Version: 420+   
Hardware: Mac   
OS: OS X 10.4   
URL: http://concisity.net
Attachments:
Description Flags
test cases
none
test case none

Description Berndt Jung 2005-08-23 17:40:43 PDT
This should get the text of the selection's start container.  The mozilla version works, and the Safari 
version used to work (old safari).  The two examples below are meant as bookmarklets.  Safari will report 
that the returned object is a range object, but I cannot do anything with this object, such as get the start/
end containers/offsets.  Interestingly toString() does not work either, yet if it is concatinated with a string, 
it does work.

safari: <a href="javascript:d=window.getSelection();alert(d.startContainer.data);">getStartContainerText()
</a>
mozilla: <a href="javascript:d=window.getSelection().getRangeAt(0);alert
(d.startContainer.data);">getStartContainerText()</a>
Comment 1 Berndt Jung 2005-08-23 17:45:36 PDT
Created attachment 3542 [details]
test cases

Drag the links to the bookmark bar to test
Comment 2 Oliver Hunt 2005-09-07 04:29:36 PDT
Nice test case, although interestingly ffx seems to be able to do both mozilla+safari mechanisms for at 
least one test
Comment 3 Alexey Proskuryakov 2005-12-24 04:28:10 PST
Actually, window.getSelection() does not return a Range object - it returns a Selection object (with type 
None, Caret or Range), which doesn't have startContainer <http://developer.mozilla.org/en/docs/
DOM:Selection>.

The patch in bug 4904 adds support for getRangeAt, so the "Mozilla" way starts to work.

Keeping this bug to track the problem with toString().
Comment 4 Alexey Proskuryakov 2005-12-24 05:09:19 PST
Created attachment 5259 [details]
test case
Comment 5 Justin Garcia 2006-01-03 15:05:13 PST
Landing the toString fix.  Turns out it was defined as a method on our JS Selection object, but we didn't 
handle it in Selection::callAsFunction

getRangeAt and toString should now behave like they do in FF.