ฉันมีปัญหากับเหตุการณ์โหลดที่แนะนำโดย turbolinks เริ่มต้นปัจจุบัน:
document.addEventListener('turbolinks:load', function() {
…
});
สิ่งที่เกิดขึ้นคือสิ่งนี้ไม่เริ่มทำงานบน Safari เมื่อโหลดเพจ ดังนั้นฉันจึงต่อท้าย Turbolinks.dispatch("turbolinks:load");
ถึง application.js
ดูเหมือนว่ามันจะทำงานได้ดี. แต่บน Chrome มันเริ่มทำงานโดยอัตโนมัติ ดังนั้นสิ่งที่เกิดขึ้นคือเหตุการณ์ turbolinks:load
เกิดขึ้นสองครั้ง
การแก้ไขแรกของฉันคือให้เริ่มทำงาน turbolinks:load
บนเบราว์เซอร์ที่ไม่ใช่ Chrome เท่านั้น
แต่อย่างใด แม้แต่บน Chrome มุมมองบางส่วนก็ไม่ทริกเกอร์ turbolinks:load
โดยอัตโนมัติ ดังนั้นฉันจึงต้องยิงมันในมุมมองที่เฉพาะเจาะจงด้วย
วิธีแก้ปัญหาสุดท้ายที่ฉันพบคือการใช้:
$(document).on('ready turbolinks:load', function() {
…
});
ดูเหมือนว่าจะแก้ไขปัญหาทั้งหมดได้เนื่องจากเริ่มทำงานเมื่อโหลดหน้าแรกหรือโหลดซ้ำและเมื่อฉันคลิกลิงก์ นอกจากนี้ยังเริ่มทำงานบน Chrome และ Safari
มีวิธีที่ดีกว่าในการจัดการเรื่องนี้หรือไม่
เอกสารบอกว่าเวอร์ชันแรกนั้นถูกต้อง แต่ดูเหมือนจะไม่เป็นเช่นนั้น
ฉันพลาดอะไรบางอย่างไปหรือเปล่า?
(หมายเหตุ: การใช้ jQuery ไม่ใช่ข้อเสียสำหรับฉัน และฉันรู้ว่าฉันสามารถนำไปใช้กับ document.addEventListener
สองสามรายการได้)
async
บน<script>
หรือไม่ - person Dom Christie   schedule 02.05.2018