w***@gmail.com
w***@gmail.com
  • 发布:2016-04-29 17:31
  • 更新:2017-04-20 16:27
  • 阅读:1704

【报Bug】netchange事件在Android下无法触发

分类:HTML5+

详细问题描述
netchange事件在iOS可以正常触发,但在Android(包括Nexus 5, Samsung S6, Mi 4, 华为荣耀7)下,无论是关闭Wifi还是移动数据,均无法触发。

重现步骤
[步骤]:

  1. 打开App,进入登录页面。(不需要登录)
  2. 关闭Wifi与移动数据网络
    [结果]:并未提示“亲您的网络不给力!请检查”
    [期望]:提示“亲您的网络不给力!请检查”

运行环境
[系统版本]:Android 5.1.1
[浏览器版本]: Chrome 45.0.2454.94
[IDE版本]:HBuilder 7.0.0.201603152331
[mui版本]:Mui v2.6.0

附件
[代码片段]:

function listenerNetChange() {  
  var hasOptOffLine = false;  
  window.addEventListener("netchange", function() {  
    var nt = null;  
    if (plus && plus.networkinfo && !hasOptOffLine) {  
      nt = plus.networkinfo.getCurrentType();  
      switch (nt) {  
        case plus.networkinfo.CONNECTION_ETHERNET:  
        case plus.networkinfo.CONNECTION_WIFI:  
          break;  
        case plus.networkinfo.CONNECTION_CELL2G:  
        case plus.networkinfo.CONNECTION_CELL3G:  
        case plus.networkinfo.CONNECTION_CELL4G:  
          break;  
        default:  
          hasOptOffLine = true;  
          mui.alert("亲您的网络不给力!请检查", "网络提示", "确定", function() {  
            hasOptOffLine = false;  
          });  
          break;  
      }  
    } else {  
      return;  
    }  
  }, false);  
}  

function initPage() {  
...  
listenerNetChange();  
...  
}  

mui.plusReady(initPage);

[安装包]:

联系方式
[QQ]:234825805
[电话]:15396665665

2016-04-29 17:31 负责人:无 分享
已邀请:
Fett

Fett

这么好的bug,官方屁都不回一个。我们也遇到这问题了。无法解决,只能用原生的事件。

  • BoredApe

    完整代码怎么写的

    2016-06-02 18:07

  • Fett

    回复 BoredApe:我们是嵌入在WebView集成方式中的页面,安卓不能用,iOS正常.

    2016-06-06 14:01

bughunter

bughunter - 先挣一个亿

顶!Android 5.1.1 没有触发netchange的监听

Trust

Trust - 少说废话

<!DOCTYPE html>  
<html>  

    <head>  
        <meta charset="UTF-8">  
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />  
        <title></title>  
    </head>  

    <body>  
        <script type="text/javascript">  
            var plusReady = function(callback) {  
                if(window.plus) {  
                    callback();  
                } else {  
                    document.addEventListener('plusready', callback, false);  
                }  
            };  
            plusReady(function(){  
                document.addEventListener('netchange', function(){  
                    console.log('netchange');  
                });  
            });  
        </script>  
    </body>  

</html>

经测试,可以正常相应网络变化事件。注意,是添加document对象的事件监听,而不是window。

  • bughunter

    断网的时候打开app,然后再连网,没有触发监听,然后手动断掉网络能触发监听,再次手动连接网络也能触发监听

    2017-04-20 17:29

该问题目前已经被锁定, 无法添加新回复