- From: <bugzilla@jessica.w3.org>
- Date: Thu, 14 Jul 2011 15:25:08 +0000
- To: www-dom@w3.org
http://www.w3.org/Bugs/Public/show_bug.cgi?id=13250 Summary: In "replace data", bail out early if the data will be the same Product: WebAppsWG Version: unspecified Platform: All OS/Version: All Status: NEW Severity: enhancement Priority: P2 Component: DOM Core AssignedTo: annevk@opera.com ReportedBy: Simetrical+w3cbug@gmail.com QAContact: member-webapi-cvs@w3.org CC: mike@w3.org, www-dom@w3.org Before the step "Insert data into data after offset code units.", add something like # Substring data with offset offset and count count, and let current data be the result. # If current data equals data, terminate these steps. That way, if there's no actual change, mutation events won't fire and ranges won't be affected. E.g., if you have a selection in a text node like foo[bar]baz, and you do text.data = text.data, we want the selection to remain foo[bar]baz and not become []foobarbaz. Among browsers I tested a few months ago, Chrome does this special-casing, and it makes sense. That way text.data = text.data is a no-op, which is what you'd expect. Authors are likely to do things like function getNewData(data) { if (flibberty()) { data += "!"; } if (squizzle()) { data = data.replace(/elephant/g, "cantaloupe"); } return data; } text.data = getNewData(text.data); and will naturally expect that nothing will happen if flibberty() and squizzle() are both false. Of course, if they're really worried about range mutations they should be passing the actual text node and using appendData/replaceData to make the changes, but we can at least make it easy for them to get it right in as many cases as possible. -- Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.
Received on Thursday, 14 July 2011 15:25:15 UTC