Opened 14 years ago
Closed 12 years ago
#6742 closed Bug (expired)
IE: insertHtml still has problems with contenteditable
Reported by: | Dinu | Owned by: | |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | General | Version: | 3.4 |
Keywords: | Cc: |
Description
Probably related to #6005
Don't know how to produce a code to reproduce
Visual explanation:
[<span contenteditable="false">foo</span>]
insertHtml('<span contenteditable="false">bar</span>');
The content is added after the selected element instead of replacing it. insertElement works dandy though. I think the selection needs to be deleted altogether.
Change History (7)
comment:1 Changed 14 years ago by
Status: | new → pending |
---|
comment:2 Changed 14 years ago by
I got to this by the following procedure:
- set editor contents to <span contenteditable="false">foo</span>
- ...(get span element)...
- editor.selection.selectElement(spanElement)
- editor.insertHtml('<span contenteditable="false">bar</span>')
This results in <span contenteditable="false">foo</span><span contenteditable="false">bar</span> in the editor. I didn't find a way to make IE produce a [<span>...</span>] by user interaction, seems to me it's always <span>[...</span>] but I have limited experience with this.
comment:3 Changed 14 years ago by
I use this programatically as widget-editing (widget means special format <span>...</span>); so on toolbar button click, identify <span> and selectElement for replacing with edited contents, which in my understanding should replace the whole-and-nothing-but-concerned-element with the updated element. Lest there's another way to do it?
comment:4 Changed 14 years ago by
Version: | 3.4.3 (SVN - trunk) → 3.4 |
---|
comment:5 Changed 12 years ago by
Status: | pending → confirmed |
---|
TC:
var editor = CKEDITOR.instances.editor1; editor.filter.disable(); editor.setData('a<span contenteditable=false id=xxx>TEXT</span>a'); // wait... ar el = editor.document.getById('xxx'); editor.getSelection().selectElement(el); // and: editor.insertElement(CKEDITOR.dom.element.createFromHtml('<b>xxx</b>')); // or: editor.insertHtml('xxx');
On IE8 - insertion is blocked - nothing happens. On Chrome - insertion overwrites span element.
It's hard to say what's the expected result, but it should be consistent - selection that contains only non editable element (or is anchored inside one) should be handled block insertion or insertion should overwrite that element.
comment:6 Changed 12 years ago by
Status: | confirmed → pending |
---|
This might be happening due to selection not being released. If you add timeout like below you will get consistent results in both Chrome and IE.
editor.on('instanceReady', function(evt){ editor.filter.disable(); editor.setData('a<span contenteditable=false id=xxx>TEXT</span>a'); var el = editor.document.getById('xxx'); //window.setTimeout(function(){editor.getSelection().selectElement(el);editor.insertElement(CKEDITOR.dom.element.createFromHtml('<b>xxx</b>'));},100); // or: //window.setTimeout(function(){editor.getSelection().selectElement(el);editor.insertHtml('<b>xxx</b>');},100); });
Taking the above into account this issue may be a duplicate of #10079
comment:7 Changed 12 years ago by
Resolution: | → expired |
---|---|
Status: | pending → closed |
It's important that such a sample range comes from a real IE selection but not just pure assumption, could you find a real TC for this?