我正在为移动设备建立一个网站。有一页特别适合在横屏模式下浏览。
是否有一种方法来检测访问该页面的用户是否在纵向模式下查看它,如果是的话,显示一条消息通知用户该页面在横向模式下查看最好?如果用户已经在横屏模式下查看,则不会出现任何消息。
所以基本上,我想让网站检测视口的方向,如果方向是纵向,然后显示一个警告消息,建议用户这个页面最好在横向模式下查看。
我正在为移动设备建立一个网站。有一页特别适合在横屏模式下浏览。
是否有一种方法来检测访问该页面的用户是否在纵向模式下查看它,如果是的话,显示一条消息通知用户该页面在横向模式下查看最好?如果用户已经在横屏模式下查看,则不会出现任何消息。
所以基本上,我想让网站检测视口的方向,如果方向是纵向,然后显示一个警告消息,建议用户这个页面最好在横向模式下查看。
当前回答
我认为更稳定的解决方案是使用屏幕而不是窗口,因为如果你要调整桌面电脑上的浏览器窗口大小,它可以是横向或纵向的。
if (screen.height > screen.width){
alert("Please use Landscape!");
}
其他回答
有几种方法可以做到,例如:
检查窗口。价值取向 比较innerHeight和innerWidth
您可以采用下面的方法之一。
检查设备是否处于纵向模式
function isPortrait() {
return window.innerHeight > window.innerWidth;
}
检查设备是否处于横屏模式
function isLandscape() {
return (window.orientation === 90 || window.orientation === -90);
}
示例使用
if (isPortrait()) {
alert("This page is best viewed in landscape mode");
}
我如何检测方向变化?
$(document).ready(function() {
$(window).on('orientationchange', function(event) {
console.log(orientation);
});
});
$(window).on("orientationchange",function( event ){
alert(screen.orientation.type)
});
为了将所有这些伟大的注释应用到我的日常编码中,为了所有应用程序之间的连续性,我决定在我的jquery和jquery移动代码中使用以下内容。
window.onresize = function (event) {
applyOrientation();
}
function applyOrientation() {
if (window.innerHeight > window.innerWidth) {
alert("You are now in portrait");
} else {
alert("You are now in landscape");
}
}
大卫·沃尔什的方法更好,更切中要害。
// Listen for orientation changes
window.addEventListener("orientationchange", function() {
// Announce the new orientation number
alert(window.orientation);
}, false);
在这些更改期间,窗口。方向属性可能会改变。值为0表示纵向视图,-90表示设备横向向右旋转,90表示设备横向向左旋转。
http://davidwalsh.name/orientation-change
下面是我根据David Walsh的文章(检测移动设备的方向变化)找到的最好的方法。
if ( window.matchMedia("(orientation: portrait)").matches ) {
alert("Please use Landscape!")
}
解释:
match media()是一个本地方法,允许您定义媒体查询规则并在任何时间点检查其有效性。
我发现在这个方法的返回值上附加一个onchange侦听器很有用。例子:
var mediaQueryRule = window.matchMedia("(orientation: portrait)")
mediaQueryRule.onchange = function(){ alert("screen orientation changed") }