方案1: orientationchange 事件 (推荐)

function orientationChange() {if (window.orientation == 180 || window.orientation == 0) { console.log('竖屏');} if (window.orientation == 90 || window.orientation == -90 ){ console.log('横屏');}
};window.addEventListener("orientationchange",orientationChange);

关于 orientationchange 事件

定义和用法: 在用户水平或者垂直翻转设备(即方向发生变化)时触发的事件。

参数 描述
function(event) 必须。指定 orientationchange 事件触发后执行的函数。要确定设备按哪个方向旋转,您可以访问方向属性 orientation ,属性值可以是 " portrait(纵向)" 或者 " landscape(横向)"。
屏幕方向对应的 window.orientation 值:// 仅参考,需自行当前版本的横竖屏值
Andriod:  0 || 180  横屏
iOS:     90 || -90  横屏
Andriod: 90 || -90  竖屏
iOS:      0 || 180  竖屏

方案2: matchMedia

let match = window.matchMedia("(orientation:portrait)");
match.addListener((mql) => {console.log(mql);if (match.matches) {console.log('竖屏');}else {console.log('横屏');}
});

当视图状态发生改变时,监听器对应的函数就会执行,而对应的 MediaQueryList 对象也会传入。这个对象包括两个属性:matches(布尔值),表示CSS media query是否与当前的显示状态匹配;media 对应传入的参数字符串。

关于 matchMedia() 方法

定义和用法: matchMedia() 返回一个新的 MediaQueryList 对象,表示指定的媒体查询字符串解析后的结果。
matchMedia() 方法的值可以是任何一个 CSS @media 规则 的特性, 如 min-height, min-width, orientation 等。

MediaQueryList 对象有以下两个属性:

  • media:查询语句的内容。
  • matches:用于检测查询结果,如果文档匹配 media query 列表,值为 true,否则为 false。

MediaQueryList 对象还可以监听事件。通过监听,在查询结果发生变化时,就调用指定的回调函数。

方法 描述
addListener( functionref ) 添加一个新的监听器函数,该函数在媒体查询的结果发生变化时执行。
removeListener( functionref ) 从媒体查询列表中删除之前添加的监听器。 如果指定的监听器不在列表中,则不执行任何操作。

语法:

window.matchMedia(mediaQueryString);
mediaQueryString: 必需,一个字符串,表示即将返回一个新 MediaQueryList 对象的媒体查询。

返回值: 返回 MediaQueryList 对象。

方案3: resize 配合 ( window.innerWidth, window.innerHeight )

window.addEventListener("resize", (event) => {const orientation = (window.innerWidth > window.innerHeight) ? "landscape" : "portrait";if(orientation === 'portrait'){console.log('竖屏');} else {console.log('横屏');}
}, false);

缺点: 只要 window 的 size 变化,就会不断触发触发 resize 事件。可使用防抖来优化一下,建议设置1200毫秒以上。
传送门:Vue中 实现函数的防抖、节流及应用场景

关于 resize() 方法

定义和用法: 当调整浏览器窗口的大小时,发生 resize 事件。
resize() 方法触发 resize 事件,或规定当发生 resize 事件时运行的函数。

语法:

$(selector).resize(function);
function: 可选。规定当发生 resize 事件时运行的函数。

JavaScript 监听移动端横竖屏状态的几种方式相关推荐

  1. Android--播放视频横竖屏切换的2种方式

    Activity的横竖屏切换其实很简单, 如果你的Activity没有声明android:configChanges, 那么Activity的方向就会随着手机的旋转而旋转. (手机需要开启自动旋转功能 ...

  2. 移动端判断手机横竖屏状态

    禁用用户自动缩放功能: <meta name="viewport" content="width=device-width, initial-scale=1.0, ...

  3. 移动端判断手机横竖屏状态及加载相应样式或内容的解决方案

    移动端的开发过程中,免不了要判断横竖屏,然后在执行其他操作,比如分别加载不同样式或内容等等. 首先在做移动端开发的时候,在HTML页面head中加入如下代码 <meta name="v ...

  4. android 监听屏幕是否锁屏

    今天,简单讲讲如何监听手机屏幕是否锁屏. 实现方法:1)通过BroadcastReceiver接收广播Intent.ACTION_SCREEN_ON和Intent.ACTION_SCREEN_OFF可 ...

  5. 开启1521端口监听_修改Oracle监听默认端口号1521的方法

    前言 大家都知道在oracle中,默认的监听端口号为1521,一旦有人扫描出这个端口号就会知道此服务器为oracle数据库服务器,存在极其大的安全隐患,下面在这里,教大家如何修改oracle默认端口号 ...

  6. [html] HTML5如何监听video的全屏和退出全屏?

    [html] HTML5如何监听video的全屏和退出全屏? 监听fullscreenchange事件document.addEventListener('fullscreenchange', (ev ...

  7. JavaScript 监听手机端的touch滑动事件(滑动手势)

    如何监听移动端滑动手势(上 / 下 / 左 / 右滑动),今天记录下. var startx, starty;//获得角度 function getAngle(angx, angy) {return ...

  8. JS获取移动端系统信息(操作系统、操作系统版本、横竖屏状态、设备类型、网络状态、生成浏览器指纹)...

    function getOS() { // 获取当前操作系统 var os; if (navigator.userAgent.indexOf('Android') > -1 || navigat ...

  9. DSAPI多功能组件编程应用-HTTP监听服务端与客户端

    本文中,演示了使用DSAPI.网络相关.HTTP监听,快速建立服务端和客户端. HTTP监听服务端的作用,是监听指定计算机端口,以实现与IIS相同的解析服务,提供客户端的网页请求,当然,这不仅仅是应用 ...

最新文章

  1. Linux脚本选题背景,shell实例100例《一》
  2. legend3---OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
  3. 成功解决_catboost.CatBoostError: Bad value for num_feature: Cannot convert ‘b‘\x8f\x91‘‘ to float
  4. 电脑实用mysql后C盘内存不足_电脑高手用这方法,终于解决了C盘空间不足的问题,网友:这操作服了...
  5. Linux_异常_08_本机无法访问虚拟机web等工程
  6. OpenCV-Python实战(3)——OpenCV中绘制图形与文本
  7. rpm 安装、卸载软件命令 ——以nginx为例
  8. bat脚本集合adb shell命令实现快速截屏,远比手机助手去截屏方便
  9. ucenter通信失败和不能登录的解决
  10. UEFI中的Fd文件
  11. 蓝桥杯杨辉三角形java
  12. 网络安全之VMware12虚拟机软件安装全过程
  13. 中国第一代技术网红,阿里云P10技术专家褚霸:我只是一个程序员 。
  14. 华为交换机eth口作用_华为交换机 eth-trunk
  15. 带有vlan tag的报文与网卡的交互关系
  16. 蜂鸣器电路设计中选用注意事项--【电路设计】
  17. mysql 自定义插件调试
  18. 从zookeeper官方文档系统学习zookeeper
  19. 电脑怎么连接隐藏的无线WiFi ?
  20. 【Python爬虫】图文教学 爬取并汇总至Excel:高考志愿中的所有专业大类、具体专业的各项信息

热门文章

  1. Android系统(MT6797)CPU频率工作模式以及调整频率的方法
  2. 离了Linux,我就活不了!
  3. 《优雅是女人最美的外衣》-欧石楠
  4. Ceph N的新功能:PG合并和自动调整
  5. Python之系统函数、自定义函数、模块、递归合集
  6. 学mysql的作用是什么_你知道学习数据库有什么用吗
  7. 计算机毕业设计java+ssm公交站牌广告灯箱管理系统(源码+系统+mysql数据库+Lw文档)
  8. Diopter mac版(AE光线折射朦胧模糊插件)
  9. Python Torando6.2
  10. js 模板字符串转html,JS一行代码实现一个简单的模板字符串替换