Reputation: 2331
I have an iFrame with designmode turned on. In the document I have several 'special' elements which can be pasted by the user through menu selections (custom characters/identifiers/descriptions used within the wider application that are fixed). I need to protect these html elements from modification and treat them as a single entity if the user chooses to select or delete them. An example iframe would look like this:
<iframe>
<html dir="ltr">
<head></head>
<body class="editableDoc">
<p>Here is a <span class="special readonly">SPECIAL</span> character</p>
</body>
</html>
</iframe>
Design mode enables editing of the whole body contents which is exactly as I need it.
What would be the best way to protect the 'readonly' span? The best description I can give is that I want the span and its contents to be treated as if it were a single character for all user text operations (i.e. moving the cursor, selecting, deleting). I have tried setting contenteditable="false" on the span element and this does have many of the desired effects, but it works badly in IE8/9 and has other, smaller issues in other browsers. Plus I'm not sure mixing designmode and contenteditable in the same solution is a good idea.
Upvotes: 3
Views: 2871
Reputation: 31839
You can use contentEditable=false
like so:
<body contenteditable>
<p>Here is a <span contenteditable='false'>SPECIAL</span> character</p>
</body>
This works whether it's in an iframe or not. It works in Chrome and Firefox — likely works in recent IEs too, considering that it's not prefixed.
Demo at: http://codepen.io/bfred-it/pen/bGhaC
A similar question here: contenteditable=false inside contenteditable=true block is still editable in IE8
Upvotes: 4
Reputation: 24627
Use the read-only
value of the user-modify
CSS property to protect a span in Firefox and Chrome:
<iframe src="about:blank" srcdoc="<body contenteditable><span style='-webkit-user-modify: read-only; -moz-user-modify: read-only;'>Hi</span></body>">
</iframe>
Upvotes: 2