HTML5技术

更靠谱的横竖屏检测方法 - Zsingsong(2)

字号+ 作者:H5之家 来源:H5之家 2016-09-22 17:00 我要评论( )

isOrientation = ('orientation' in window 'onorientationchange' in window); orientationCB = function (e) { if (win.orientation === 180 || win.orientation === 0 ) {meta.init = 'portrait' ;meta.current

isOrientation = ('orientation' in window && 'onorientationchange' in window); orientationCB = function(e) { if (win.orientation === 180 || win.orientation === 0) { meta.init = 'portrait'; meta.current = 'portrait'; } if (win.orientation === 90 || win.orientation === -90) { meta.init = 'landscape'; meta.current = 'landscape'; } return function() { if (win.orientation === 180 || win.orientation === 0) { meta.current = 'portrait'; } if (win.orientation === 90 || win.orientation === -90) { meta.current = 'landscape'; } event.trigger(eventType, meta); } }; var callback = isOrientation ? orientationCB() : (function() { resizeCB(); return function() { timer && win.clearTimeout(timer); timer = win.setTimeout(resizeCB, 300); } })(); // 监听 win.addEventListener(isOrientation ? eventType : 'resize', callback, false);

完整代码猛击这里

 

方案五:

目前,上述几种方案都是通过自定制的订阅与发布事件模式来实现的。这里可以基于浏览器的事件机制,来模拟orientationchange。即对orientationchange的不兼容进行修复。

关键代码如下:

var eventType = 'orientationchange'; fire = function() { var e; if (document.createEvent) { e = document.createEvent('HTMLEvents'); e.initEvent(eventType, true, false); win.dispatchEvent(e); } else { e = document.createEventObject(); e.eventType = eventType; if (win[eventType]) { win[eventType](); } else if (win['on' + eventType]) { win['on' + eventType](); } else { win.fireEvent(eventType, e); } } }

完整代码猛击这里

通过上述5种方案,自己对移动端横竖屏检测有了更进一步的认识,有些东西只有自己亲身经历过才知道为什么要这么写,自己也把其中缘由记录在文章中,希望对大家有帮助。经过5种方案的演变得到了最终orientationchange-fix,github地址:https://github.com/zhansingsong/orientationchange-fix

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • ajax跨子域请求的两种现代方法 - zhjh256

    ajax跨子域请求的两种现代方法 - zhjh256

    2016-09-07 13:00

  • ios h5 app avalon tap点击事件失效及点击延迟300ms问题解决方法 - xuejianxiyang

    ios h5 app avalon tap点击事件失效及点击延迟300ms问题解决方法 - x

    2016-08-31 18:00

  • document.querySelector和querySelectorAll方法 - 贵欢lucky

    document.querySelector和querySelectorAll方法 - 贵欢lucky

    2016-08-04 10:00

  • 常见的前端图像显示方法 - 水之君

    常见的前端图像显示方法 - 水之君

    2016-07-29 10:00

网友点评
i