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>
Created attachment 3542 [details] test cases Drag the links to the bookmark bar to test
Nice test case, although interestingly ffx seems to be able to do both mozilla+safari mechanisms for at least one test
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().
Created attachment 5259 [details] test case
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.