【发布时间】:2012-11-13 14:18:39
【问题描述】:
我正在根据教程here编写自己的视频播放器
当我加载页面时,出现标题错误。
这是处理滑块的代码:
//create html structure
//main wrapper
var $video_wrap = $('<div></div>').addClass('logan-video-player').addClass(options.theme).addClass(options.childtheme);
//controls wraper
var $video_controls = $('<div class="logan-video-controls"><a class="logan-video-play" title="Play/Pause"></a><div class="logan-video-seek"></div><div class="logan-video-timer">00:00</div><div class="logan-volume-box"><div class="logan-volume-slider"></div><a class="logan-volume-button" title="Mute/Unmute"></a></div></div>');
$lVideo.wrap($video_wrap);
$lVideo.after($video_controls);
//get new elements
var $logan_video_seek = $('.logan-video-seek', $video_container);
var seeksliding;
var createSeek = function() {
if($lVideo.attr('readyState')) {
var video_duration = $lVideo.attr('duration');
$logan_video_seek.slider({
value: 0,
step: 0.01,
orientation: "horizontal",
range: "min",
max: video_duration,
animate: true,
slide: function(){
seeksliding = true;
},
stop:function(e,ui){
seeksliding = false;
$lVideo.attr("currentTime",ui.value);
}
});
$video_controls.show();
} else {
setTimeout(createSeek, 150);
}
};
createSeek();
var gTimeFormat=function(seconds){
var m=Math.floor(seconds/60)<10?"0"+Math.floor(seconds/60):Math.floor(seconds/60);
var s=Math.floor(seconds-(m*60))<10?"0"+Math.floor(seconds-(m*60)):Math.floor(seconds-(m*60));
return m+":"+s;
};
var seekUpdate = function() {
var currenttime = $lVideo.attr('currentTime');
if(!seeksliding) $logan_video_seek.slider('value', currenttime);
$logan_video_timer.text(gTimeFormat(currenttime));
};
$lVideo.bind('timeupdate', seekUpdate);
我不是 jquery 爱好者,这是我第一次从事插件工作,所以我不知道该怎么做。在谷歌上也找不到太多。
感谢您的宝贵时间
编辑
我浏览了滑块小部件的 JQuery UI API 规范,发现我可能错误地设置了滑块值:
$logan_video_seek.slider('value', currenttime) // see seekUpdate() function above
我已将其更改为如下:
$logan_video_seek.slider('option', 'value', currenttime);
不幸的是,我遇到了同样的错误:
未捕获的异常:无法在初始化之前调用方法:试图调用方法'option'
我在滑块 api 文档中找不到任何东西来初始化滑块。我确定会在上面的createSeek 函数中完成吗?
【问题讨论】:
-
$lVideo 是在哪里声明的?这段代码是从哪里执行的?
-
@AndrewD。它在代码中要早得多。我通过在最后一个之前删除
(jQuery)解决了这个问题;在插件中。不知道这是为了什么或为什么它会破坏代码,但现在控件出现了(视频也可以很好地播放)。但现在,我收到一条错误消息,提示Object [object Object] has no method 'lVideo' -
当您不断收到错误时,您可以将完整代码粘贴到 jsfiddle 之类的地方以保持完整性,但 codereview 会更适合它们。
标签: jquery html jquery-ui html5-video jquery-slider