Open Bug 183496 Opened 22 years ago Updated 3 years ago

selection toString() method erroneously converts <cr><lf> to <space>

Categories

(Core :: DOM: Selection, defect, P5)

x86
Windows 2000
defect

Tracking

()

People

(Reporter: neil, Unassigned)

Details

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.2.1) Gecko/20021130
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.2.1) Gecko/20021130

a) sorry of this is the wrong section to file this in;  seemed the closest.

b) this may actually not be a bug, but some bizarre function of format=flowed
that I'm not aware of


Simply put, I am trying to get the current selection in a mail window as a JS
string (this for re-integrating links broken across lines), but I'm getting
inconsistent results.

I tried to use a modified version of comm's nsContextMenu.js:searchSelected
(below) as I didn't want it's deafult of converting <cr>s & <lf>s to <space>.

However, sometimes the toString() method gives me the "\r\n" on line breaks as
I'd expect, and sometimes it converts these to a <space> - meaning I can't
distinguish line breaks from spaces (which I need to turn to "%20").

As best as I can determine, the 'bug' occurs when an email is *not* marked as
content format=flowed.  In this case, <cr><lf> is converted to <space> upon
toString() (but correctly survices cut'n'paste).

If format=flowed is present, the toString() works as ]I] expected.

I believe that toString() should not be making assuptions about format where
none is specified.  I think this is the one out of nsISelection.cpp


Here's the version of the method I try to use:

function rawSearchSelected(context)
{
    var focusedWindow = document.commandDispatcher.focusedWindow;
    var searchStr = focusedWindow.__proto__.getSelection.call(focusedWindow);
    searchStr = searchStr.toString();  /* the culprit */
    searchStr = searchStr.replace( /^\s+/, "" );
    searchStr = searchStr.replace(/(\n|\r)+/g, "");
    searchStr = searchStr.replace(/\t/g, " ");
    searchStr = searchStr.replace(/\s+$/,"");
    return searchStr;
}

Reproducible: Always

Steps to Reproduce:
1. Receive email *without* format=flowed  [how in Moz?  I had to do it 'raw']
2. Try to extract a multi-line selction as string in JS (see quoted func. above).

E.g., content of selectiun is:

http://www.go
ogle.com/
Actual Results:  
"http://www.go ogle.com/"

Expected Results:  
"http://www.go\r\nogle.com\r\n"
Mass-reassigning bugs to dom_bugs@netscape.com
Assignee: jst → dom_bugs
Selection.
Assignee: dom_bugs → mjudge
Status: UNCONFIRMED → NEW
Component: DOM Level 0 → Selection
Ever confirmed: true
QA Contact: desale → pmac
Assignee: mjudge → nobody
QA Contact: pmac → selection

Bulk-downgrade of unassigned, >=5 years untouched DOM/Storage bugs' priority and severity.

If you have reason to believe this is wrong, please write a comment and ni :jstutte.

Severity: normal → S4
Priority: -- → P5
You need to log in before you can comment on or make changes to this bug.