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,但在纵向模式下我需要它:<script type="text/javascript"> $(document).ready(function() $('#top-header').animate( opacity: 'hide' ); $('#top-header').animate( opacity: 'show', //height: '+=300px' marginTop: '-150px' , 1600).css( 'display': 'block' ); ); </script>
为什么动画在纵向模式下不起作用?如果只是尺寸问题,则可以先根据是纵向还是横向来计算它们【参考方案6】:
使用此代码可能对您完全有用
var orient = Math.abs(window.orientation) === 90 ? 'landscape' : 'portrait';
【讨论】:
请做一些格式化,以便读者明白你想说什么 他在问如何在 PHP 中做到这一点。【参考方案7】:一种残酷的方法是通过 jQuery 将方向变化存储在 cookie 中,并使用 php 中的 $_COOKIE
变量访问它。
但是,您仍然需要 javascript 挂钩来检测方向变化和可能的页面重新加载。
【讨论】:
以上是关于php中的ipad方向检测?的主要内容,如果未能解决你的问题,请参考以下文章