Кнопки панели инструментов ckeditor не отвечают без перезагрузки страницы
В моем приложении rails 4.2.3 я использую ckeditor 4.5.3, интегрированный с использованием драгоценного камня ckeditor_rails.
У меня также есть турболинки, но я отключил турболинки для каждого элемента ckeditor, содержащего div и body.
Это работает нормально, но когда я нахожусь на странице с экземпляром ckeditor, и я использую кнопку браузера, чтобы вернуться на страницу без ckeditor, затем использую кнопку браузера, чтобы перейти на страницу ckeditor, появляется редактор, но кнопки панели инструментов не реагируют на нажатия. Я получаю эту ошибку в консоли:
Uncaught TypeError: Cannot read property 'getSelection' of undefined
Обновление страницы ckeditor заставляет работать кнопки панели инструментов.
Вот мой соответствующий код с ckeditor и turbolinks:
# Gemfile
gem 'turbolinks'
gem 'ckeditor_rails'
# application.js
//= require ckeditor-jquery
# application.html.erb
<head>
...
<%= stylesheet_link_tag 'application', media: 'all' %>
<%= javascript_include_tag 'application', "data-turbolinks-track" => 'true' %>
<script>
document.addEventListener("DOMContentLoaded", function (event) {
event.preventDefault();
$('.ckeditor').ckeditor({
// optional config
});
});
</script>
</head>
<% if current_page?(action: 'new') || current_page?(action: 'edit') %>
<body data-turbolinks='false' data-no-turbolink>
<% else %>
<body>
<% end %>
...
</body>
# _form.html.erb
<div class='form-group' data-turbolinks='false' data-no-turbolink>
<%= f.label :description %>
<%= f.text_area :description, class: 'form-control ckeditor', data: {turbolinks: false, no_turbolink: true} %>
</div>
# assets/javascripts/ckeditor/config.js
CKEDITOR.editorConfig = function( config ) {
// Define changes to default configuration here.
// For complete reference see:
// http://docs.ckeditor.com/#!/api/CKEDITOR.config
// The toolbar groups arrangement, optimized for two toolbar rows.
config.toolbarGroups = [
{ name: 'clipboard', groups: [ 'clipboard', 'undo' ] },
{ name: 'editing', groups: [ 'find', 'selection', 'spellchecker' ] },
{ name: 'links' },
{ name: 'insert' },
{ name: 'forms' },
{ name: 'tools' },
{ name: 'document', groups: [ 'mode', 'document', 'doctools' ] },
{ name: 'others' },
'/',
{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
{ name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'bidi' ] },
{ name: 'styles' },
{ name: 'colors' },
{ name: 'about' }
];
config.toolbar = [
{ name: 'clipboard', items: [ 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo' ] },
{ name: 'editing', items: [ 'Scayt' ] },
{ name: 'links', items: [ 'Link', 'Unlink', 'Anchor' ] },
{ name: 'insert', items: [ 'Image', 'CodeSnippet', 'Mathjax', 'Table', 'HorizontalRule', 'SpecialChar' ] },
{ name: 'tools', items: [ 'Maximize' ] },
{ name: 'document', items: [ 'Source' ] },
'/',
{ name: 'basicstyles', items: [ 'Bold', 'Italic', 'Strike', '-', 'RemoveFormat' ] },
{ name: 'paragraph', items: [ 'NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Blockquote' ] },
{ name: 'styles', items: [ 'Styles', 'Format' ] },
{ name: 'about', items: [ 'About' ] }
];
// Remove some buttons provided by the standard plugins, which are
// not needed in the Standard(s) toolbar.
config.removeButtons = 'Underline,Subscript,Superscript';
// Set the most common block elements.
config.format_tags = 'p;h1;h2;h3;pre';
// Simplify the dialog windows.
config.removeDialogTabs = 'image:advanced;link:advanced';
config.extraPlugins = 'codesnippet,mathjax,widget,lineutils';
config.language = 'en';
config.language_list = [ 'en:English'];
config.mathJaxLib = '//cdn.mathjax.org/mathjax/2.2-latest/MathJax.js?config=TeX-AMS_HTML';
config.enterMode = CKEDITOR.ENTER_BR;
config.allowedContent = true;
};
Кстати, я пробовал с обоими config.allowedContent, установленным в true и false - в любом случае, та же проблема существует.