用JavaScript检测Android手机在浏览器中的旋转我知道在iPhone上的Safari中,您可以通过监听onorientationchange事件和查询window.orientation为了这个角度。这在Android手机的浏览器中是可能的吗?为了清楚起见,我想问的是,android设备的旋转是否可以被JavaScript在标准网页上运行。这在iPhone上是可能的,我想知道它是否可以用于Android手机。
3 回答
一只甜甜圈
TA贡献1836条经验 获得超5个赞
可靠的方法是同时听调整大小和方向变化的事件
var previousOrientation = window.orientation;var checkOrientation = function(){ if(window.orientation !== previousOrientation){ previousOrientation = window.orientation; // orientation changed, do your magic here }};window.addEventListener("resize", checkOrientation, false);window.addEventListener("orientationchange", checkOrientation, false); // (optional) Android doesn't always fire orientationChange on 180 degree turnssetInterval(checkOrientation, 2000);
|==============================================================================| | Device | Events Fired | orientation | innerWidth | screen.width | |==============================================================================| | iPad 2 | resize | 0 | 1024 | 768 | | (to landscape) | orientationchange | 90 | 1024 | 768 | |----------------+-------------------+-------------+------------+--------------| | iPad 2 | resize | 90 | 768 | 768 | | (to portrait) | orientationchange | 0 | 768 | 768 | |----------------+-------------------+-------------+------------+--------------| | iPhone 4 | resize | 0 | 480 | 320 | | (to landscape) | orientationchange | 90 | 480 | 320 | |----------------+-------------------+-------------+------------+--------------| | iPhone 4 | resize | 90 | 320 | 320 | | (to portrait) | orientationchange | 0 | 320 | 320 | |----------------+-------------------+-------------+------------+--------------| | Droid phone | orientationchange | 90 | 320 | 320 | | (to landscape) | resize | 90 | 569 | 569 | |----------------+-------------------+-------------+------------+--------------| | Droid phone | orientationchange | 0 | 569 | 569 | | (to portrait) | resize | 0 | 320 | 320 | |----------------+-------------------+-------------+------------+--------------| | Samsung Galaxy | orientationchange | 0 | 400 | 400 | | Tablet | orientationchange | 90 | 400 | 400 | | (to landscape) | orientationchange | 90 | 400 | 400 | | | resize | 90 | 683 | 683 | | | orientationchange | 90 | 683 | 683 | |----------------+-------------------+-------------+------------+--------------| | Samsung Galaxy | orientationchange | 90 | 683 | 683 | | Tablet | orientationchange | 0 | 683 | 683 | | (to portrait) | orientationchange | 0 | 683 | 683 | | | resize | 0 | 400 | 400 | | | orientationchange | 0 | 400 | 400 | |----------------+-------------------+-------------+------------+--------------|
宝慕林4294392
TA贡献2021条经验 获得超8个赞
如果你只关心 窗口尺寸 (典型情景) -而不是关于具体方向: 处理 resize
只有事件。 在你的处理程序中,采取行动 window.innerWidth
和 window.InnerHeight
只有。 不使用 window.orientation
-它不会在IOS上流行。
如果你真的关心 特定取向 :手柄 只
这个 resize
事件发生在Android上,以及 只
这个 orientationchange
事件发生在IOS上。 在你的处理程序中,采取行动 window.orientation
(和 window.innerWidth
和 window.InnerHeight
)
在桌面浏览器上开发时,这种只使用维度的方法也是有效的,这些浏览器可以模拟移动设备,例如Chrome 23。( window.orientation
在桌面浏览器上不可用)。 不需要global/anonymous-file-level-function-wrapper-level变量。
添加回答
举报
0/150
提交
取消