Javascript 如何在modernizr.touch-loop中正确调用jquery函数?
我正在使用Modernizr 2.7.1检测用户是否使用触摸设备,以便在BigVideo.js的全屏视频背景或移动设备的静态图片之间切换:Javascript 如何在modernizr.touch-loop中正确调用jquery函数?,javascript,jquery,modernizr,Javascript,Jquery,Modernizr,我正在使用Modernizr 2.7.1检测用户是否使用触摸设备,以便在BigVideo.js的全屏视频背景或移动设备的静态图片之间切换: $(function() { var BV = new $.BigVideo({useFlashForFirefox:false}); BV.init(); if (Modernizr.touch) { BV.show('/img/background-dock.jpg'); } els
$(function() {
var BV = new $.BigVideo({useFlashForFirefox:false});
BV.init();
if (Modernizr.touch) {
BV.show('/img/background-dock.jpg');
} else {
BV.show('/vid/test.mp4', {altSource:'/vid/test.ogv', ambient:true});
}
});
不幸的是,静态图像没有响应,缩放效果也不好,尤其是在较小的屏幕上
因此,我希望使用另一个脚本来显示图像,该脚本本身可以完美地工作:
$(function() {
$.vegas({
src:'/img/background-dock.jpg'
});
$.vegas('overlay', {
src:'/img/overlays/01.png'
});
});
如果我将此代码放在BV.show('/img/background dock.jpg')中代码>循环,代码未执行,即未发生任何事情:
<script>
$(function() {
var BV = new $.BigVideo({useFlashForFirefox:false});
BV.init();
if (Modernizr.touchevents) {
BV.show($(function() {$.vegas({src:'/img/background-dock.jpg'}); }););
} else {
BV.show('/vid/test.mp4', {altSource:'/vid/test.ogv', ambient:true});
}
});
</script>
$(函数(){
var BV=new$.BigVideo({useFlashForFirefox:false});
BV.init();
if(现代化触摸事件){
show($(function(){$.vegas({src:'/img/background dock.jpg'});}););
}否则{
show('/vid/test.mp4',{altSource:'/vid/test.ogv',ambient:true});
}
});
不幸的是,我的Javascript知识仍然有限
如何将代码正确地放入循环中?(从我对github问题的回答中交叉发布…)
Modernizr.touch
已重命名为Modernizr.touchevents
,因为它实际上是一种触摸事件检测。正如你在书中看到的
有时你有一个触摸设备。。有时您会有webkit touch事件。有时会出现MS指针事件
因此,在本例中,您还需要执行(modernizer.touchevents | | modernizer.pointerevents)
不幸的是,不在2.*分支中,因为它是在3.0左右构建的,尚未发布。您需要从当前主分支构建Modernizer构建(说明包含在自述文件中),或者手动将pointerevents detect添加到Modernizer构建中
也就是说,触摸屏对于移动设备来说是一个糟糕的指示器。许多新的Windows8平板电脑都支持触摸功能,可以获得静态背景
您真正要做的是检查是否支持自动播放,但你需要支持它
干杯
现在已经讲完了,关于你的问题
BV.show
不接受函数作为参数
如果你只在这一个地方使用它,你真的不需要让你的访问者下载一个完全独立的图书馆(维加斯)来缩放图片。您可以通过查看为该元素生成的css并将其添加到页面中来重新创建它们正在做的事情。然后,您可以在HTML元素上切换一个类(就像Modernizer如何添加它的类)来选择性地隐藏或显示它,而不是现在正在执行的BV.show(vegasstuff)
类似于
<script>
if (Modernizr.touch) {
$('html').addClass('showOverlay');
}
else {
// do the video
}
</script>
<style>
.overlay {
display: none;
margin: 0;
padding: 0;
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 100%;
}
.showOverlay .overlay {
display: block;
background-image: url(/img/background-dock.jpg);
}
</style>
if(现代化触摸屏){
$('html').addClass('showOverlay');
}
否则{
//做视频
}
.覆盖{
显示:无;
保证金:0;
填充:0;
位置:固定;
左:0;
排名:0;
宽度:100%;
身高:100%;
}
.showOverlay.overlay{
显示:块;
背景图像:url(/img/background dock.jpg);
}
;)问题是如何在modernizer循环中正确调用vegas.js函数,让它成为.touch或.touchevents。对不起,我是个疯子…哦,天哪,对不起。没有在介绍之后读。完全是我的错。我会更新更多的信息。这正是我想要的。非常感谢兄弟。唯一要确保的是,支持视频背景的浏览器没有下载背景图像。确保检查网络选项卡。对不起,如果这是一个愚蠢的问题,那么“检查网络选项卡”是什么意思?对于带有大触摸屏的Windows 8设备,它应该显示视频而不是背景图像,是否可以在Javascript代码中包含屏幕分辨率检查?即,我们假设每个屏幕分辨率为1920 x 1080像素或更高的触摸设备都是桌面设备。不理想,但总比没有好。