【问题标题】:ipad orientation detection in php?php中的ipad方向检测?
【发布时间】:2011-07-30 19:26:05
【问题描述】:

嗨,我想在 php 中检测 ipad 方向,我知道我可以检测到 iPad,但是我如何检测方向,我需要在 php 中而不是 css 中,因为我想在我的画廊中以纵向和 x 显示 x 图片横向。

这是我用来检测 iPad 的 php 的代码:

if(strpos($_SERVER['HTTP_USER_AGENT'], 'iPad') !== FALSE) {

} else {

}

我已经在这个网站和谷歌上检查过,但找不到任何可以帮助的东西

谢谢

【问题讨论】:

    标签: php ipad


    【解决方案1】:

    当用户以不同的方式握住她的 iPad 时,iPad 的方向可能会发生变化。因此,没有必要在 php 中注册它 - 当您的响应到达客户端时,它可能已经不同了。

    如果需要在 CSS 中无法完成的任何管道(例如加载不同的图像等),请处理 orientationchanged event in JavaScript

    【讨论】:

    • @graham 好吧,然后在 JavaScript 中执行此操作,或者更好的是,始终发送它并包含 CSS 规则 @media all and (orientation:landscape){ .portrait-only {display:none;}} 以其他方式隐藏它。
    【解决方案2】:

    这不是方向检测,而是 USER AGENT 检测。它只检测正在浏览您的页面的浏览器类型。

    【讨论】:

    • 现代浏览器的用户代理字符串包含的内容远不止浏览器名称和版本,所以这并不完全准确。
    • 这里是 iPad USER AGENT 字符串:“Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0 .4 Mobile/7B334b Safari/531.21.10" 它在哪里显示您当前的设备方向?
    • 它没有。我指的是第二句话。一些用户代理列出了插件、操作系统、机器架构等,因此kind of browser 对 HTTP 用户代理的描述并不完全准确。
    【解决方案3】:

    您是在尝试检测设备还是设备的旋转方式?

    我相信您可以更轻松地使用 Javascript 或 CSS 检测设备的方向,您是否研究过这些?

    Javascript:

    <button onclick="detectIPadOrientation();">What's my Orientation?</button>
    
    <script type="text/javascript">
        window.onorientationchange = detectIPadOrientation;
        function detectIPadOrientation () 
        {
            if ( orientation == 0 ) {
                alert ('Portrait Mode, Home Button bottom');
            }
            else if ( orientation == 90 ) {
                alert ('Landscape Mode, Home Button right');
            }
            else if ( orientation == -90 ) {
                alert ('Landscape Mode, Home Button left');
            }
            else if ( orientation == 180 ) {
                alert ('Portrait Mode, Home Button top');
            }
        }
    </script>
    

    CSS

    <link rel="stylesheet" media="all and (orientation:portrait)" href="portrait.css">
    <link rel="stylesheet" media="all and (orientation:landscape)" href="landscape.css">
    

    【讨论】:

    • 我尝试使用你的代码,但不知道如何将我的代码添加到你的代码中,当我尝试时它不起作用:(你能用你的代码发布我的代码吗?我正在使用 css 样式表很棒的东西:)
    【解决方案4】:

    设备方向是动态的 - 用户可以在页面加载后旋转设备。因此,将其包含在用户代理字符串中是没有意义的。

    当方向改变时,你应该使用 HTML 和 JavaScript 来改变布局。

    【讨论】:

      【解决方案5】:

      每个人都建议您使用 Java Script 执行此操作,这是完全正确的,但我猜您不会从您的问题中将其视为一个选项。

      您应该从 PHP 加载足够的图像(或者如果不是一个愚蠢的数字,它毕竟只是一个 URL 字符串)以填充 JSON (json_encode($array of image URL's to use)) 格式的最大尺寸。然后使用 JavaScript 检测方向并使用正确数量/布局的图像填充页面。

      您将在 JavaScript 中拥有一个图像 URL 数组,以便从中动态选择和加载。

      【讨论】:

      • 大家好,我很高兴用 js 来做,但我需要在 jquery 中做一些动画我不知道足够的 javascript 来将它们结合起来,就像我想隐藏我的标题或制作一样它更小,以显示我可以使用动画功能在查询中执行的更多图像。
      • 这是我的 js,但在纵向模式下我需要它:&lt;script type="text/javascript"&gt; $(document).ready(function(){ $('#top-header').animate({ opacity: 'hide' }); $('#top-header').animate({ opacity: 'show', //height: '+=300px' marginTop: '-150px' }, 1600).css({ 'display': 'block' }); }); &lt;/script&gt;
      • 为什么动画在纵向模式下不起作用?如果只是尺寸问题,则可以先根据是纵向还是横向来计算它们
      【解决方案6】:

      使用此代码可能对您完全有用 var orient = Math.abs(window.orientation) === 90 ? 'landscape' : 'portrait';

      【讨论】:

      • 请做一些格式化,以便读者明白你想说什么
      • 他在问如何在 PHP 中做到这一点。
      【解决方案7】:

      一种残酷的方法是通过 jQuery 将方向变化存储在 cookie 中,并使用 php 中的 $_COOKIE 变量访问它。

      但是,您仍然需要 javascript 挂钩来检测方向变化和可能的页面重新加载。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多