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

  1. Set CKEDITOR.dtd.$editable.td = 1 to enable editing inside td.
  2. 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>
  1. Click on the last (empty) td and press DELETE key

Expected result

Nothing to happen.

Actual result

  1. Zero Width Space is inserted between tables.
  2. Cursor disappears.
  3. 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).

Change History (0)

Note: See TracTickets for help on using tickets.
© 2003 – 2022, CKSource sp. z o.o. sp.k. All rights reserved. | Terms of use | Privacy policy