A new test suite for rich text editing
This post is by Roland Steiner of the Chrome Team. Roland works mainly on
layout and rendering for Chrome and WebKit. An Austrian native, Roland has ventured far and
made Tokyo his second home. -scottkMany web applications allow users not just to edit plain text, but also to
embellish it – making it bold or underlined, adding bulleted lists or images. For example,
think of online document or blog editors, or rich e-mail apps. JavaScript provides various
APIs you can use to implement these apps.
Unfortunately, while these
APIs are largely defined the same in modern browsers, the results often differ. To document
the current state of all this, we have set up a
new rich text editing test
suite as part of the larger
browserscope framework.
Let’s look at how a region of text, such as a
<div>
, can be marked as editable by adding the
contenteditable
attribute:
<div contenteditable="true"> ...some
content... </div>
You can then
manipulate the content with simple calls:
document.execCommand("formatting command", showUI,
parameter)
For example, you can set the color of the selected
text to red with this call:
document.execCommand("forecolor", false,
"red")
Although this command works well on most browsers,
different browsers implement different subsets of formatting commands, and even common
commands often produce varying HTML structures.
There are other APIs
that affect selection and cursor movement, or allow querying of the current state, and those,
too, are often implemented differently.
Our new test suite tries to
capture all currently implemented commands and APIs, and runs them on varying initial HTML
content and within various containers. The suite already contains well over 1,000 tests.
We don’t want to stop there. We intend to
grow the suite and incorporate external feedback and suggestions so we can arrive at a common
set of editing functions. We hope this can then serve as a common reference, not only for
browser implementers, but also for web developers.
To achieve this
goal, we would like input from anyone interested in this topic, including those with past
complaints about bugs and incompatibilities in this area.
For
suggestions, criticism, and general discussion on the suite and tests, please send feedback to
the
browserscope mailing
list at
browserscope@googlegroups.com.