Кнопки панели инструментов 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 - в любом случае, та же проблема существует.

0 ответов

Другие вопросы по тегам