Opened 9 years ago
Last modified 9 years ago
#14279 closed Bug
pressing delete key inside empty td[contenteditable="true"] — at Initial Version
Reported by: | Sergiy Kuzmenko | Owned by: | |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | Core : Editable | Version: | |
Keywords: | Cc: |
Description
Steps to reproduce
- Set
CKEDITOR.dtd.$editable.td = 1
to enable editing inside td. - Create the following HTML layout:
<table border="0" cellpadding="0" cellspacing="0" width="600"> <tbody> <tr> <td width="100%" contenteditable="true"><td> <tr> </tbody> <table> <table border="0" cellpadding="0" cellspacing="0" width="600"> <tbody> <tr> <td width="100%" contenteditable="true"><td> <tr> </tbody> <table>
- Click on the last (empty)
td
and press DELETE key
Expected result
Nothing to happen.
Actual result
- Zero Width Space is inserted between tables.
- Cursor disappears.
- Pressing DELETE again will throw
Uncaught TypeError: Cannot read property 'startPath' of undefined
here. This will cause onKeyDown event propagation which in Chrome and Opera will navigate back in history.
Other details (browser, OS, CKEditor version, installed plugins)
All WebKit browsers. OSX (but I'm fairly sure this affects WebKit browsers on any OS).
Solution
Removing range.select(); solves the problem.
It is hard to tell for the uninitiated what's going on here but it seems CKEditor erroneously treats <td contenteditable="true"></td>
as if it were a child of content editable block, rather than content editable container. This is further aggravated by handling WebKit quirks (if range.select();
is called).