簡體   English   中英

CKEditor未加載:有時在加載所需的JS文件之前執行代碼

[英]CKEditor not loading: Sometimes executes code before the needed JS file is loaded

我有兩個工作視圖頁面(編輯頁面和新頁面),其中包括一個要添加CKEditor的文本區域。 查看頁面包括:

<%= f.text_area :page %>                 // This produces a textarea with id image_page

<script>
  CKEDITOR.replace( 'image_page' );      // I also tried wrapping this in `$(id='image_page').ready(function () {` `CKEDITOR.replace( 'image_page' );` `});` but that made no difference.
</script>

我在application.html.erb的標題中添加了ckeditor.js

<% if controller_name == 'images' && ['new', 'edit'].include?(action_name) %>
  <script src="/assets/ckeditor.js"></script>
<% end %>

定制的基本路徑(所有文件位於public/assets/ckeditor453/ )已添加到application.js 我不需要ckeditor.js,因為上面的標頭中已經包含了ckeditor.js:

var CKEDITOR_BASEPATH = '/assets/ckeditor453/';

問題:當通過另一個視圖中的鏈接訪問新視圖或編輯視圖時(非常標准的鏈接:例如edit_image_path(image) ),則將在沒有ckeditor的情況下加載新頁面或編輯頁面,並且出現JS錯誤,指出ReferenceError: CKEDITOR is not defined 刷新同一頁面時,它會在存在ckeditor的情況下正確加載(因此錯誤消失了)。
直接訪問新路徑或編輯路徑時(因此,不是通過鏈接而是在瀏覽器的位置欄中輸入地址),該頁面會立即正確加載,並需要重新加載。

ckeditor.js是否可能存在JS加載/排序問題,因此當頁面嘗試調用CKEDITOR.replace ,尚未加載ckeditor.js (至少在通過鏈接訪問頁面時沒有)?

有誰能理解這種行為,並且能夠洞悉我該如何解決?

更新:

  • 移動加載腳本ckeditor.js在頭頂部application.html.erb不會有所作為。
  • 當我完全禁用該應用程序的渦輪鏈接時,問題就消失了。 但這不是解決方案,因為我需要為該應用程序提供turbolinks。
  • 添加gem jquery-turbolinks並不能解決問題。
  • 我質疑var CKEDITOR_BASEPATH = '/assets/ckeditor453/'; 放在正確的文件中...? 實際上,我突然在另一個視圖上遇到了一個js文件的問題,該問題一直有效,而當我刪除var CKEDITOR_BASEPATH = '/assets/ckeditor453/';時,這些問題就消失了var CKEDITOR_BASEPATH = '/assets/ckeditor453/'; 來自application.js (本文中描述的問題仍然存在)。 但是我應該在哪里添加var CKEDITOR_BASEPATH = '/assets/ckeditor453/';
  • 我也許應該包括//= require ckeditorapplication.js ,而不是將其包括在的標題application.html.erb 但是如果我包含var CKEDITOR_BASEPATH = '/assets/ckeditor453/'; //= require ckeditorapplication.js //= require ckeditor ,它找不到文件。 也嘗試//= require ckeditor453/ckeditor但仍然找不到該文件。

真的卡住了,不知道該怎么辦...

Github上的這篇文章( https://github.com/tsechingho/ckeditor-rails/issues/28 )描述了相同的行為,並確認turbolinks是問題所在。 對於鏈接到使用ckeditor的頁面的鏈接,我禁用了渦輪鏈接。 這解決了它:

link_to "Go", edit_image_path(image), data: {no_turbolink: true }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM