美文网首页兼容性问题
iPhone 手机系统版本太低不支持 onload 事件的问题及

iPhone 手机系统版本太低不支持 onload 事件的问题及

作者: 枫_d646 | 来源:发表于2018-01-19 13:22 被阅读138次

    1. onload 事件在苹果手机系统 10.2 以上系统才支持

    ( 如: iPhone 6 及以下的机型, 如果没有升级过系统是不支持 onload 事件的 )

    2. 问题描述:

    在微信公众号里,本来想给页面加一个启动图,当网页加载完成的时候 (onload 事件) 去移除启动图,这样给用户一个过渡. 但是加过后没几天就有部分苹果手机用户反映进不去,一直卡在加载图上. 最后经过排查发现问题是 低版本苹果系统的 iPhone 不支持 onload 事件,

    onload 支持情况: IOS 10.2 以上, 安卓 4.4 以上

    onload 所有浏览器支持情况

    <!DOCTYPE html>
        <head>
            <meta charset="utf-8"/>
            <title> 测试 </title>
        </head>
    
      <body onload="hideLoading()">
        <img src="a.png" id="img1">
        
        <script>
            //函数
            function hideLoading() {
                  var loadImg = document.getElementById("img1");
                   document.body.removeChild(loadImg);
              }
        </script>
    
      </body>
    

    3. 解决办法:

    (1). 让 iPhone 用户升级到最新版本. (当然是不现实的)
    (2). 使用 window.navigator.userAgent 来判断是不是苹果手机,如果是手动使用 js 移除加载图,不是就让浏览器自动调用 onload 指定的函数移除加载图.(因为苹果速度很快,除了第一次基本上看不到加载图的)

    <!DOCTYPE html>
      <head>
          <meta charset="utf-8">
          <title>解决办法 (简单)<title>
      </head>
      <body onload="hideLoading()">
        <img src="a.png" id="img1">
    
        <sctipt>
          var loadImg = document.getElementById("img1");
          var ua = window.navigator.userAgent.toLowerCase();
          var isWeixin = ua.indexOf('micromessenger') != -1; 
          var isIos = (ua.indexOf('iphone') != -1) || (ua.indexOf('ipad') != -1);
    
          //是微信,和苹果端,手动改移除加载图
          if (isWeixin && isIos)  {
                hideLoading();
           }
    
          //加载完成,自动移除加载图
          function hideLoading()  {
            document.body.removeChild(loadImg);
          }
        </script>
    
         
      </body>
    </html>
    

    浏览器判断终端的方法,网上很多

    相关文章

      网友评论

        本文标题:iPhone 手机系统版本太低不支持 onload 事件的问题及

        本文链接:https://www.haomeiwen.com/subject/dbuooxtx.html