I am using jQuery to open a dialog window with a textarea transformed into an instance of CKEditor. I'm using the jQuery adapter provided by the CKEditor team but when the dialog window opens up I cannot interact with the editor (it's created but "null" is written in the content space and I can't click on anything or modify the content).
This bug report seems to say that by using a patch provided the issue is fixed but it doesn't seem to be working for me...
Here's my code (maybe I did something wrong programmatically):
HTML:
<div id="ad_div" title="Analyse documentaire">
<textarea id="ad_content" name="ad_content"></textarea>
</div>
My includes (Everything is included correctly but maybe it's an including order issue?):
<script type="text/javascript" src="includes/ckeditor/ckeditor.js"></script>
<link rel="stylesheet" type="text/css" href="includes/jquery/css/custom-theme/jquery-ui-1.7.2.custom.css" />
<script type="text/javascript" src="includes/jquery/js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="includes/jquery/js/jquery-ui-1.7.2.custom.min.js"></script>
<script type="text/javascript" src="includes/jquery/plugins/dialog-patch.js"></script>
<script type="text/javascript" src="includes/ckeditor/adapters/jquery.js"></script>
Javascript:
$('#ad_content').ckeditor();
/* snip */
$('#ad_div').dialog(
{
modal: true,
resizable: false,
draggable: false,
position: ['center','center'],
width: 600,
height: 500,
hide: 'slide',
show: 'slide',
closeOnEscape: true,
autoOpen: false
});
$('.analyse_cell').click(function(){
$('#ad_div').dialog('open');
});
Edit: After some further testing I noticed that pressing on the toolbar buttons gave me this error:
Error: this.document.getWindow().$ is undefined Source File: includes/ckeditor/ckeditor.js Line: 82
I used a callback function with the "show:" option to delay instantiating CKEditor until after the "show" animation was complete. I found that as little as 50 milliseconds will do the trick.
modal: true,
show: {
effect: "drop",
complete: function() {
setTimeout(function(){
$( "#selector" ).ckeditor();
},50);
}
},
hide: "drop",
Hope this helps.
$('.analyse_cell').click(function(){
$('#ad_div').dialog({
modal: true,
resizable: false,
draggable: false,
position: ['center','center'],
width: 600,
height: 500,
hide: 'slide',
show: 'slide',
closeOnEscape: true,
autoOpen: false,
open: function(event,ui) {
$('#ad_content').ckeditor();
},
close: function(event,ui) {
CKEDITOR.remove($("#ad_content").ckeditorGet());
}
});
});
Use the latest version of CKEditor. Solved it for me. Version 3.4.2
Simply add this snippet to your doc and the problem is solved!
$(document).on('focusin', function(e) {
e.stopImmediatePropagation();
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With