Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:Video.js在硬刷新之前不加载_Javascript_Html_Video.js - Fatal编程技术网

Javascript:Video.js在硬刷新之前不加载

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

我正在创建一个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 "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)