Javascript:Video.js在硬刷新之前不加载
我正在创建一个rails应用程序,它使用video.js来播放视频。我还使用了其他三个脚本来定制页面上的播放器和活动。我的javascript导入的顺序如下:Javascript:Video.js在硬刷新之前不加载,javascript,html,video.js,Javascript,Html,Video.js,我正在创建一个rails应用程序,它使用video.js来播放视频。我还使用了其他三个脚本来定制页面上的播放器和活动。我的javascript导入的顺序如下: = javascript_include_tag "video.js" = javascript_include_tag "videojs-youtube.js", :defer => "defer" = javascript_include_tag "videojs-overlay.js", :defer => "defer
= javascript_include_tag "video.js"
= javascript_include_tag "videojs-youtube.js", :defer => "defer"
= javascript_include_tag "videojs-overlay.js", :defer => "defer"
= javascript_include_tag "commentFeed.js", :defer => "defer"
我的问题是,VideoJS在我第一次导航到页面时没有加载。因此,依赖video.js脚本的另外三个脚本会抛出一系列错误。直到一次艰难的刷新,一切才开始正常工作
知道为什么吗?我尝试将后面的三个脚本推迟到加载video.js,但似乎没有任何帮助
如何确保只有在加载videojs后脚本才能按顺序运行?更新:事实证明,问题与Rails如何使用TurboLink处理视图更改有关 我的videojs对象自
$(document)以来未被销毁。ready(…)
未按预期调用,因此未重新加载就无法在另一页上使用
为了解决这个问题,我使用了中的以下代码来侦听TurboLink加载事件并相应地做出响应。以下是我为使用Rails 5所做的更改:
change = ->
for player in document.getElementsByClassName 'video-js'
video = videojs('video_player')
console.log("Change, assigning video")
before_load = ->
for player in document.getElementsByClassName 'video-js'
video = videojs('video_player')
video.dispose()
console.log("before_load, disposing of video")
$(document).on('turbolinks:load', change)
$(document).on('turbolinks:before-visit', before_load)
更新:原来问题与Rails如何使用TurboLink处理视图更改有关 我的videojs对象自
$(document)以来未被销毁。ready(…)
未按预期调用,因此未重新加载就无法在另一页上使用
为了解决这个问题,我使用了中的以下代码来侦听TurboLink加载事件并相应地做出响应。以下是我为使用Rails 5所做的更改:
change = ->
for player in document.getElementsByClassName 'video-js'
video = videojs('video_player')
console.log("Change, assigning video")
before_load = ->
for player in document.getElementsByClassName 'video-js'
video = videojs('video_player')
video.dispose()
console.log("before_load, disposing of video")
$(document).on('turbolinks:load', change)
$(document).on('turbolinks:before-visit', before_load)
我曾经面对过这个问题,我用它来让videojs工作
change = ->
for player in document.getElementsByClassName 'video-js'
video = videojs(player)
before_load = ->
for player in document.getElementsByClassName 'video-js'
video = videojs(player)
video.dispose()
$(document).on('turbolinks:load', change)
$(document).on('turbolinks:before-visit', before_load)
我曾经面对过这个问题,我用它来让videojs工作
change = ->
for player in document.getElementsByClassName 'video-js'
video = videojs(player)
before_load = ->
for player in document.getElementsByClassName 'video-js'
video = videojs(player)
video.dispose()
$(document).on('turbolinks:load', change)
$(document).on('turbolinks:before-visit', before_load)