【问题标题】:Whats better to redirect, screen resolution or user agent? [closed]重定向、屏幕分辨率或用户代理哪个更好? [关闭]
【发布时间】:2012-12-03 20:33:30
【问题描述】:

我已经为网站创建了一个移动网页,但我想知道重定向的最佳方法是什么。我是根据屏幕分辨率还是用户代理重定向它们?

我会假设屏幕分辨率看起来像这样:

if (screen.width <= 1024) window.location.replace("http://www.site/mobile/")
else window.location.replace("http://www.site/");

使用 PHP,脚本看起来像这样:

$useragent=$_SERVER['HTTP_USER_AGENT'];
if(preg_match('/android/i',substr($useragent,0,4)))
header('Location: http://www,site/mobile/');

一种方法优于另一种方法吗?如果有,有什么好处?

【问题讨论】:

  • 牢记平板电脑。它们有大屏幕,但通常只提供小页面,因为它们是 android 或 ios 设备。
  • 您是要重定向所有移动用户还是仅重定向 Android?更好的做法是对移动设备进行特征检测,然后基于此进行重定向……这将使用 Javascript,而不是 PHP。
  • 您可以添加一个弹出窗口,上面写着“您想查看此页面的移动版本吗”,这样用户在看到一个全新的视图时就不会感到沮丧。
  • @Vee 但不是 popup...请不要弹出窗口! ;)
  • 使用一个按钮,以便用户可以在版本之间进行选择,或者只使用一个适合两者的网站。许多“移动”网站比它们所取代的“完整”网站更难使用,功能也更差。

标签: php javascript android html


【解决方案1】:

用户代理。

在当今视网膜显示时代和 Android 设备可以是您能想到的任何屏幕分辨率的事实中,屏幕分辨率和平台之间的相关性越来越小。事实上,有许多移动设备(nexus 7、nexus 10、ipad 3+)的屏幕分辨率与台式电脑相同或更高。分辨率根本不够描述。

另一方面,用户代理旨在告诉您发出请求的原因。毫无疑问,您会知道它是 Android 或 iOS 设备。此外,在 Android 上,我认为平板电脑不应该在其 Android 用户代理中包含字符串“mobile”,以便更好地定位。同样,iPad 和 iPhone 都有自己的一组用户代理字符串,您可以考虑这些字符串。

【讨论】:

  • “你一定会知道的”?勉强...
  • @Ian 想添加一些建设性的东西吗?你是说有 iphone/android 用户代理的桌面,还是反之亦然?显然我忽略了这样一个事实,即您可以欺骗您的用户代理,并且在某种程度上您依赖 Android 制造商来不搞砸用户代理。
  • 我完全支持用户代理检测 - 我觉得如果用户真的不想被视为他们正在使用的用户代理,他们可能会遭受应用程序执行某些操作的后果基于此。我的观点是,你不能毫无疑问地知道。欺骗是问题所在,并且无法保证所请求的页面是什么
【解决方案2】:

您需要考虑为什么要制作移动网站。它是否增加了功能(触摸)或消除了多余的重量(3G)简化了小屏幕上的导航?如果您为触摸设备制作了它,请检测触摸的可用性。如果您构建它以允许轻松访问小屏幕,那么屏幕分辨率可能是一种选择(我的 1200x720 的 SGS3 会看到完整的,这对我来说没问题)。通过用户代理切换而不考虑太多是一个坏主意(如果 UA 中的“移动”是好的切换,但并非所有人都支持它)。如果用户代理包含 ios,你会去一个小屏幕优化网站吗?现在你不会,但你可以在几年前,在 iPad 之前做到这一点。你会用支持触摸的 Windows mini 电脑做什么?考虑功能,而不是设备,除非您想在每台新设备上更新所有站点。没有“移动”这样的东西,有很多不同尺寸和功能的设备,还有你无法想象的新设备问世。

写下您的移动网站的要求(触摸?)以及它对普通网站的添加(更好地处理小屏幕?),并测试这些。让他们自己选择。

请记住,如果您有无限流量套餐或 wifi 和大屏幕设备,您会发现移动网站的完整版版本很烦人,而允许触摸导航和增强功能的网站,并且在任何屏幕尺寸上都可以很好地进行导航。

无论如何,我可以建议,当/如果您进行重定向时,请尝试访问其他站点上的同一页面,而不是主页。所以如果你在

index.php?language=en&page=about__us

尝试重定向到

mobile?language=en&page=about__us

为了更好的用户体验。不要假设访问者是从主页访问您的网站的。

【讨论】:

    猜你喜欢
    • 2012-01-04
    • 2022-11-07
    • 2014-05-25
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多