video.js,销毁之前实例重新初始化,初始化不了

我在demo中销毁之前实例重新初始化,是ok的:

var handler = function () {
    alert(12111);
}
var handler1 = function () {
    alert(22222);
}
var player;
play(handler);
function play(handler) {
    videojs("example_video_1",
        {
            "techOrder": ['html5', 'flash'],
            fluid: true,
            "controls": true,
            "bigPlayButton": false,
            flash: {
                swf: 'js/swf/video-js.swf'
            },
            controlBar: {
                muteToggle: false,
                captionsButton: false,
                chaptersButton: false,
                playbackRateMenuButton: false,
                LiveDisplay: false,
                subtitlesButton: false,
                remainingTimeDisplay: false,
                progressControl: false,
                volumeMenuButton: {
                    inline: false,
                    vertical: true
                },//竖着的音量条
                fullscreenToggle: false
            }
        }
        , function () {
            var id = $("#example_video_1").find("video")[0].id;
            player = this;
            player.src("http://180.97.83.70:30220/media/adinfo/2018/05/1920x1080_1.mp4");
            player.play();
            $("#example_video_1").find("button").show();
            console.log(player.duration())
            this.on('loadeddata', handler);
            this.on('ended', function () {
                this.pause();
            })
        });
}
setTimeout(function () {
    player.dispose();
    $("#bt").before('<video id="example_video_1" class="video-js vjs-default-skin" controls width="640" height="264"></video>')
    play(handler1);
}, 3000);

但是自己的项目,第一次初始化可以,第二次先销毁再初始化,却初始化不了:
//video.js 初始化video
    function playWithVideoJs(handler,url) {
        var divFirst = $("#NER_EshowadvImgAdv_ad").parent().find("div")[0];
        if (notNull(divFirst) && divFirst.id == "NER_EshowadvVideoAdv_ad") {
            $("#NER_EshowadvImgAdv_ad").parent().find("div")[0].remove();
            $("#NER_EshowadvImgAdv_ad").after('<video id="NER_EshowadvVideoAdv_ad" controls class="video-js vjs-default-skin vjs-big-play-centered vjs-fluid"></video>');
        }
        if (notNull(myPlayer1)) {
            myPlayer1.dispose();
        }
        videojs('NER_EshowadvVideoAdv_ad', {
            "techOrder": ['html5', 'flash'],
            fluid: true,
            example_option: true,
            // "controls": false,
            "bigPlayButton": false,
            flash: {
                swf: 'js/swf/video-js.swf'
            },
            controlBar: {
                muteToggle: false,
                captionsButton: false,
                chaptersButton: false,
                playbackRateMenuButton: false,
                LiveDisplay: false,
                subtitlesButton: false,
                remainingTimeDisplay: false,
                progressControl: false,
                volumeMenuButton: {
                    inline: true,
                    vertical: false
                },//竖着的音量条
                fullscreenToggle: false
            }
        }, function () {
            myPlayer1 = this;
            var videoID = $("#NER_EshowadvVideoAdv_ad").find("video")[0].id;
            $("#" + videoID).prop("src", url);
            // $("#NER_EshowadvVideoAdv_ad").find("button").off("click").on("click", function () {
            $("#NER_EshowadvVideoAdv_ad").find("video")[0].play();
            // });
            //暂停--播放完毕后也会暂停
            this.on('loadedmetadata', handler);
        });
    }

clipboard.png

clipboard.png

clipboard.png

这是什么问题啊?第一次用video.js,跪求大神指点,谢谢...

阅读 13.4k
2 个回答

你的销毁应该是把video标签给移除了

新手上路,请多包涵

不知道楼主有没有解决。销毁确实是把video标签给移除了,不过第一次重新初始化之后你可以看下video标签里面的内容是否跟用js初始化相同,在页面加载过程中使用videojs会给video添加很多元素,使用js初始化好像不太一样

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题