Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>My suggestion would be to first check the caret is positioned after the non-editable node, and if so, create a range that starts immediately after the non-editable element and ends at the caret position. Check whether the text in this range is empty. If it is, that means the caret is placed directly after the non-editable element, so in that case remove the element. Finally, place the caret where the non-editable had been.</p> <p>Live demo: <a href="http://jsfiddle.net/timdown/vu3ub/" rel="noreferrer">http://jsfiddle.net/timdown/vu3ub/</a></p> <p>Code:</p> <pre><code>document.onkeypress = function(e) { e = e || window.event; var keyCode = e.which || e.keyCode; if (keyCode !== 8) { return; } var sel = rangy.getSelection(); if (sel.rangeCount === 0) { return; } var selRange = sel.getRangeAt(0); if (!selRange.collapsed) { return; } var nonEditable = document.getElementById("nonEditable"); if (!nonEditable) { return; } // Check the caret is located after the non-editable element var range = rangy.createRange(); range.collapseAfter(nonEditable); if (selRange.compareBoundaryPoints(range.START_TO_END, range) == -1) { return; } // Check whether there is any text between the caret and the // non-editable element. If not, delete the element and move // the caret to where it had been range.setEnd(selRange.startContainer, selRange.startOffset); if (range.toString() === "") { selRange.collapseBefore(nonEditable); nonEditable.parentNode.removeChild(nonEditable); sel.setSingleRange(selRange); // Prevent the default browser behaviour return false; } }; </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload