【问题标题】:Browser back/forward button loads multiple CKEditor forms浏览器后退/前进按钮加载多个 CKEditor 表单
【发布时间】:2019-09-15 20:17:57
【问题描述】:

我有一个用于在 Rails 5 中发帖的表单。我正在使用 CKEditor 文本编辑器,它工作正常。但是,每次单击浏览器的前进或后退按钮都会加载一个新的文本编辑器。供参考:我正在使用“galetahub”中的 CKEditor gem。 我的问题类似于这个问题: CKEditor loads several times in Ruby on Rails 5

我认为这是 turbolinks 的问题,但我不知道还能尝试什么。除了完全禁用 turbolinks,我尝试过:

  1. 在 div 和表单字段中插入“data-no-turbolink”和“data: { turbolinks: false }”。
  2. 我已经尝试了从 gem 到 "init_ckeditor" js 文件的标准实现:

    ready = ->
      $('.ckeditor').each ->
        CKEDITOR.replace $(this).attr('id')
    
    $(document).ready(ready)
    $(document).on('page:load', ready)
    
  3. 以及以下变化:

    document.addEventListener('turbolinks:before-cache', function() 
    {
      CKEDITOR.replace('text_form')
    });
    
    and
    
    $(document).on("turbolinks:load", function() {
      CKEDITOR.replace('text_form')
    });
    (Both separately and together.)
    

这是宝石:

    gem 'ckeditor', github: 'galetahub/ckeditor'

这是表单和字段:

    <%= form_with model: @article, local: true, html:{multipart: true} do |form| %>

      <div class="text-form">
        <%= form.cktext_area :text, class: 'ckeditor', id: 'text_form' %>
      </div>

    <% end %>

这里是js:

    CKEDITOR.replace('text_form')

任何帮助将不胜感激。一直在寻找这个问题的答案。通常,我可以自己解决问题,但这让我绞尽脑汁。

【问题讨论】:

    标签: javascript ruby-on-rails ckeditor ruby-on-rails-5 turbolinks


    【解决方案1】:

    在加载时获取 CK 编辑器长度。 然后在长度为0时添加 if(CKEDITOR.Instances['text_form']==null) CKEDITOR.replace('text_form')

    【讨论】:

    • 这对我不起作用。我需要用 $(document).ready... 或类似的东西来包装这个方法吗?
    猜你喜欢
    • 2013-07-31
    • 2015-08-07
    • 2011-07-28
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 2014-05-10
    • 2013-03-02
    相关资源
    最近更新 更多