兼容(1)

2023-11-13 08:58:54发布
50

new Date(“2015-01-01 00:00:00”) NaN

/* 
    在Safari IOS 上使用(new Date('2015-01-01 00:00:00')) .getTime() 返回NaN,
    原因就是不兼容;解决办法 将字符串的‘-’替换成‘/’
*/
'2015-01-01 00:00:00'.replace(/-/g,'/')


关于部分ios不执行deviceorientation事件的bug

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>test</title>
</head>
<body>
<script type="text/javascript">
    var a = 0;
     window.addEventListener('deviceorientation', function(){
         a++;
         document.title = a;
     }, false);
</script>
</body>
</html>
/*
    很简单的一段代码,但是部分ios机型却不执行。研究几个小时后,发现是如果ios的系统版本是12.2以下的就没问题。可以执行该事件。
    但是12.2以上的,则需要在https的域名下才能执行改事件。原因是新系统版本晃动事件需要https协议
*/


replaceAll替代方法

replace(/,/g, ' ')


IOS 系统下 filter: drop-shadow()渲染显示异常怎么办?

异常如下:用drop-shadow设置投影在IOS上会出现,刚开始加载的时候阴影没有展示,过一会又展示出来了的问题。

解决方案:

加上transform: translateZ(0)开启3d模式,可以解决不显示、显示不全等问题。


移动端页面,用了touch 事件,元素内的 a 标签无法点击

在touchstart里先判断一下,如果是点的是a标签就不执行滚动
if (e.target.tagName === 'a')return;


解决IOS返回上一页,页面不刷新,js不执行的问题

// 兼容苹果跳转回退不刷新页面
var browserRule = /^.*((iPhone)|(iPad)|(Safari))+.*$/;
if (browserRule.test(navigator.userAgent)) {
    window.onpageshow = function(event) {
        if(event.persisted) {
            window.location.reload()
        }
    };
}

tips:不要放到window.onload或者document.ready里面执行,否则没用