Javascript - 仅在检测到横向时运行我的脚本

标签 javascript jquery

我正在运行一个脚本来在带有滚动的菜单中显示通知,但我不知道如何检测设备是否有方向景观来验证脚本

onClick="VerHayMas();" 调用完美无缺,但如果用户打开菜单一次,点击 #boton-menu 并且您的设备处于纵向,将方向更改为横向后,脚本不再符合目标。

The script has its logic ONLY if the device is in landscape, which is when the menu needs to show the notification.

那么,有没有可能我的脚本只对 (max-width:999px) 和 (orientation:landscape) 有效,而忽略肖像...?

我是 JS 初学者,我真的不知道该怎么做。

有什么想法吗?

提前致谢!

HTML 和 CSS

#mas-menu {display:none}

<div id="boton-menu" onClick="VerHayMas();">+</div>

脚本:

var clicksVerHayMas = 0;

function VerHayMas() {
    clicksVerHayMas = clicksVerHayMas + 1;
    if (clicksVerHayMas == 1) {
        document.getElementById('mas-menu').style.display = 'block';

        window.setTimeout(function() {
            $('#mas-menu').fadeOut('slow');
        }, 4000);
    }
};

编辑:

我已经尝试使用以下脚本,但它不起作用。如果用户在纵向模式下调用 onClick="VerHayMas();",脚本将不再以横向模式运行。

我在这里做错了什么?

const matchesMediaQuery = window.matchMedia('(max-width:999px) and (orientation:landscape)').matches;

if (matchesMediaQuery) {

var clicksVerHayMas = 0;
  function VerHayMas() {
  clicksVerHayMas = clicksVerHayMas +1;
  if(clicksVerHayMas == 1){
  document.getElementById('mas-menu').style.display = 'block';

  window.setTimeout(function(){
  $('#mas-menu').fadeOut('slow');
  },4000);
  }};
}

最佳答案

我会保持简单,如果屏幕高度小于宽度,则用户处于横向模式。你可以从全局 window 中获取高度和宽度对象。

if (window.innerWidth > window.innerHeight) {
    // The user is in landscape mode!
    userInLanscapeFunc();
} 

引用:https://developer.mozilla.org/en-US/docs/Web/API/Window/innerHeight

关于Javascript - 仅在检测到横向时运行我的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55978407/

相关文章:

javascript - 为什么selector.text会得到一个内部函数值?

javascript - Excel标签中显示未定义

javascript - 如何修改 Elasticsearch 文档的 _source 字段

Javascript 如何拆分 JSON 数组,找到数字中的最大值,然后获取与其对应的名称?

javascript - Rails - 从 Controller 生成类似模态的 "flash"

jquery - 根据主体类为显示 block 和不显示的 div 添加淡入和淡出 jQuery 动画?

javascript - 如何在 MVC 应用程序中管理 session

javascript - 使用jQuery比较服务器时间和当前时间

jQuery:通过 .attr() 添加两个属性;方法

javascript - 使用backbone、underscore、jquery、bootstrap等的Web应用程序