Javascript 禁用手持设备上的fancybox

Javascript 禁用手持设备上的fancybox,javascript,android,iphone,fancybox,handheld,Javascript,Android,Iphone,Fancybox,Handheld,我需要确保,在iPhone、Android或任何手持设备上单击链接查看html文件时,它不会像在计算机上那样使用Fancybox进行查看 我尝试过@media的方法,但运气不好 是否有任何代码可以根据它是什么设备来禁用某些javascript位 谢谢 您可以使用 if( navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/webOS/i) || navigator.userAgent.match(/iPhon

我需要确保,在iPhone、Android或任何手持设备上单击链接查看html文件时,它不会像在计算机上那样使用Fancybox进行查看

我尝试过@media的方法,但运气不好

是否有任何代码可以根据它是什么设备来禁用某些javascript位


谢谢

您可以使用

if( navigator.userAgent.match(/Android/i) ||
 navigator.userAgent.match(/webOS/i) ||
 navigator.userAgent.match(/iPhone/i) ||
 navigator.userAgent.match(/iPod/i) ||
 navigator.userAgent.match(/BlackBerry/)
 ){
 // your fancybox instantiation here
}

但它永远不会100%准确

您可以使用

if( navigator.userAgent.match(/Android/i) ||
 navigator.userAgent.match(/webOS/i) ||
 navigator.userAgent.match(/iPhone/i) ||
 navigator.userAgent.match(/iPod/i) ||
 navigator.userAgent.match(/BlackBerry/)
 ){
 // your fancybox instantiation here
}

但它永远不会是100%准确的

安德烈的解决方案将适用于特定的设备子集,但更好的方法可能是根据屏幕大小来实现,因为这可能是您不想使用facnybox的原因(因为屏幕太小)

这个怎么样:

if (window.innerWidth < 500 && window.innerHeight < 500) {

    //small screen device - don't use fancy box
}
if(window.innerWidth<500&&window.innerHeight<500){
//小屏幕设备-不要使用花哨的盒子
}

您可以根据fancybox外观的阈值来交换宽度和高度。

Andre的解决方案将适用于特定的设备子集,但更好的方法可能是根据屏幕大小进行交换,因为这可能就是您不想使用facnybox的原因(因为屏幕太小)

这个怎么样:

if (window.innerWidth < 500 && window.innerHeight < 500) {

    //small screen device - don't use fancy box
}
if(window.innerWidth<500&&window.innerHeight<500){
//小屏幕设备-不要使用花哨的盒子
}

无论fancybox的阈值是什么,您都可以交换宽度和高度,使其看起来不错。

我正在使用这种方法,它对我来说很好

if( $(window).width() > 480 && (!navigator.userAgent.match(/Android/i) ||
!navigator.userAgent.match(/webOS/i) ||
!navigator.userAgent.match(/iPhone/i) ||
!navigator.userAgent.match(/iPod/i) ||
navigator.userAgent.match(/BlackBerry/))
){
  $(".royalSlide").click().fancybox({
     'overlayShow'  : false,
     'transitionIn' : 'elastic',
     'transitionOut'    : 'elastic'
  });

}

我正在使用这种方法,它对我来说很好

if( $(window).width() > 480 && (!navigator.userAgent.match(/Android/i) ||
!navigator.userAgent.match(/webOS/i) ||
!navigator.userAgent.match(/iPhone/i) ||
!navigator.userAgent.match(/iPod/i) ||
navigator.userAgent.match(/BlackBerry/))
){
  $(".royalSlide").click().fancybox({
     'overlayShow'  : false,
     'transitionIn' : 'elastic',
     'transitionOut'    : 'elastic'
  });

}

在盒子里思考,没有双关语,非js解决方案:

.fancybox-overlay {
    display: none !important;
}

@media (min-width: 1200px) {
    .fancybox-overlay {
        display: block !important;
    }
};

在盒子里思考,没有双关语,非js解决方案:

.fancybox-overlay {
    display: none !important;
}

@media (min-width: 1200px) {
    .fancybox-overlay {
        display: block !important;
    }
};

对于fancybox 2,这对我来说很有效

$(.fancyboximg”)。单击(函数(e){
如果(窗内宽度<799){
e、 停止传播();
e、 预防默认值();
}
})
$(“.fancybox img”).fancybox({
差额:100,
自动调整大小:正确,
});

对于fancybox 2,这对我来说很有效

$(.fancyboximg”)。单击(函数(e){
如果(窗内宽度<799){
e、 停止传播();
e、 预防默认值();
}
})
$(“.fancybox img”).fancybox({
差额:100,
自动调整大小:正确,
});

禁用具有屏幕大小的fancybox

@media (min-width: 1000px) {
.fancybox-is-open {
    display: none !important;
}};

禁用具有屏幕大小的fancybox

@media (min-width: 1000px) {
.fancybox-is-open {
    display: none !important;
}};

你可以用一个正则表达式:navigator.userAgent.match(/Android | WebOS | iPhone | iPod | Blackberry/i)来实现这一点——它更干净一些。正如你所说的,这并不理想,因为Android可能是一款平板电脑,或者为了兼容性,该设备可能会伪装成Internet Explorer,或者可能是一些你从未听说过的中国移动设备,等等。你可以用一个正则表达式:navigator.userAgent.match(/Android | WebOS | iPhone | iPod | Blackberry/i)来实现这一点,更干净一些。正如你所说,这并不理想,因为Android可能是一款平板电脑,或者该设备可能为了兼容性而冒充Internet Explorer,或者可能是一些你从未听说过的中国移动设备,等等。我喜欢你的方法,但数字是错的。例如,IPhonem的分辨率为960*640是的,但iPhone使用虚拟像素,因此它报告其窗口大小为320x480,以免破坏为旧版iPhone构建的应用程序和网站。如果你不相信我,试试看!有一些大型安卓手机的分辨率可能超过500像素,但如果屏幕那么大,那么不管怎么说,使用fancy box都是可以的——这就是这种方法的要点——你是在测试设备的实际功能,而不是像“掌上电脑”这样的任意类别其中可能还包括iPad等笔记本电脑大小的设备。Android设备以DIP(设备独立像素)来测量屏幕大小,这与iPhone使用的虚拟像素类似,因此我认为同样适用。我是一名iOS开发人员,不是安卓开发人员,所以我不能肯定。谢谢各位,我会尝试一下。我不想在手机/平板电脑上安装fancybox的主要原因是,在大多数手机/平板电脑上都无法滚动iframe。我喜欢你的方法,但是数字是错误的。例如,IPhonem的分辨率为960*640是的,但iPhone使用虚拟像素,因此它报告其窗口大小为320x480,以免破坏为旧版iPhone构建的应用程序和网站。如果你不相信我,试试看!有一些大型安卓手机的分辨率可能超过500像素,但如果屏幕那么大,那么不管怎么说,使用fancy box都是可以的——这就是这种方法的要点——你是在测试设备的实际功能,而不是像“掌上电脑”这样的任意类别其中可能还包括iPad等笔记本电脑大小的设备。Android设备以DIP(设备独立像素)来测量屏幕大小,这与iPhone使用的虚拟像素类似,因此我认为同样适用。我是一名iOS开发人员,不是安卓开发人员,所以我不能肯定。谢谢各位,我会尝试一下。我不想在手机/平板电脑上安装fancybox的主要原因是,在大多数手机/平板电脑上都无法滚动iframe。而且它在窗口的中心位置也不好。