php中的ipad方向检测?

Posted

技术标签:

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

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

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

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

 else 


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

谢谢

【问题讨论】:

【参考方案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 挂钩来检测方向变化和可能的页面重新加载。

【讨论】:

以上是关于php中的ipad方向检测?的主要内容,如果未能解决你的问题,请参考以下文章

检测 iPad 的方向 - Swift Playgrounds

检测 iphone/ipad 方向不起作用

如何更正此语法以检测 ipad 浏览器方向

如何检测 iPad 上启动屏幕动画的应用程序启动方向!

检测屏幕方向变化(快速)

检测移动设备和方向以添加代码