少於 1 分鐘閱讀

前言

最近製作專案時,常發生按下刪除鈕,彈出好幾個確認視窗 “Are you sure?”,要按很多次才會真的刪除。 查了網頁原始碼,也沒發現重複載入的 javascript,在百思不得其解之下,只好一直亂 google,終於在 stackoverflow 討論串找到解決方式。

發生原因

此問題原來是在做 SEO 時,我將 javascript 放到 body 最後方,因為 turbolink 的關係,導致所有頁面都載入一次。

解決方式

兩種方式:

  1. 把 javascript 放回 head 中
  2. 將 javascript_include_tag 的部分做調整,如下
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> 

改為

<%= javascript_include_tag 'application', 'data-turbolinks-eval' => false %>.
  • data-turbolinks-eval=false 的意思是希望這段 script 只在直接訪問的时候執行,Turbolinks.visit 訪問的時候不執行。

參考

  1. http://stackoverflow.com/questions/16477927/ruby-on-rails-delete-confirmation-pop-up-dialog-displaying-twice
  2. https://github.com/turbolinks/turbolinks-classic/issues/244
  3. https://ruby-china.org/topics/12177

留言