2010-07-15 120 views
2

对于我正在处理的网站,我正在使用JavaScript实现图像预加载,但如果某人的网络带宽较慢,我绝对不想拨打我的preload_images()函数。使用javascript/jquery检测移动浏览器的最佳方法?

对于我的市场来说,只有那些使用移动互联网的人才是智能手机。

检测这些用户的最佳方法是什么,以便我可以避免为他们预加载图像?


选项1:检测浏览器的宽度

if($(window).width() > 960){ preload... } 

选项2:检测用户代理与浏览器的列表,以预加载为

if($.browser in array safelist){ preload... } 

在那里有更好的选择吗?

+1

我经常浏览我的手机上使用无线宽带。仅仅因为它是手机并不意味着它的带宽很低,反过来说,仍有数量惊人的人仍在拨号上网。考虑尝试让整个网站更轻松/更快速为每个人。 – edeverett 2010-07-15 14:27:51

+1

@edeverett - 有关WiFi的好处,我很想拥有我的网站的移动优化版本,尽管宁可采取一种适合所有的方法。 – Haroldo 2010-07-15 14:29:16

回答

0

也许使用CSS @media指令以及隐藏的对象?

.imagesToPreload {display:none;} 
@media screen { 
    #imageToPreload1 {background-image:url('blah.img');} 
} 
@media handheld { 
    #imageToPreload1 {background-image:none;} 
} 

然后在Javascript中,您可以在“imagesToPreload”类获取所有的对象,阅读和backgroundImage属性,如果它不是没有预装它。

无可否认,这是我的头顶,我没有测试这个想法。像往常一样,一定有我没有想到的东西...

1

我发现我不喜欢网站,决定哪个版本的网站,我应该访问特定的设备或环境。根据你决定的标准做出初步决定是件好事,但为了上帝的缘故,给我一个链接,我可以点击,这样我就可以选择“更高带宽网站”,反之亦然,并将其保存为cookie。然后我可以用我自己的判断来覆盖自动脚本的任何错误。

0

我认为edeverett关于手机的观点不一定很慢(而且桌面也不一定很快),这是一个很好的观点。

请记住不要删除您的访问者的选择 - 即最正常的移动浏览器可以选择不加载图片(或特别不加载大图片),也可以在下载之前压缩图片的代理服务 - 一些移动访问者可能希望在您的网站上提供完整的预加载体验。

另一种解决方案可能是这样的: if($(window).width() < 320){ preload_smaller_images(); } 原因比以前更少的原因是移动浏览体验比桌面更受限制。

R. Hill的CSS建议是不是最差的,虽然(它是否可以在CSS来实现,它应该IMO),它也可以做到每屏尺寸: @media handheld, screen and (max-width: 320px){ /* */ }