• 机器是否联网的javascript的判断方法介绍


    在很多场景下,只有机器已经联网以后,web应用才能启动。如果没有联网,就会提示错误。、

    但是机器有时候要重启。 如果机器重启后,立刻启动web应用的话,可能,机器上的网络服务还没有准备好。

    特别是windows7,启动网络服务需要好几秒,这个时候怎么办呢?

    之前尝试过几种方法:

    比如 通过ping来判断, 但是ping需要有一个非本机的ip地址。 这个不是很通用

    比如监控某个端口是否已经被占用,但是光端口占用,也不能说明网络已经启动了。

    另一个方面,如果是web应用的话,最好是在前端判断,比如用javascript。

    网上也有人写 javascript 的ping的模拟效果。但确实有些麻烦。

    怎么办呢,关键的时候,还是html5能给出好的解决方法:

    方法一: 

    navigator.onLine

    if (navigator.onLine) 
    
    {    //正常工作} 
    
    else {    //执行离线状态时的任务}
    
     
    
    


    这个html5的 navigator的新特性可以很简单帮我们搞定

    HTML5为此定义了一个navigator.onLine属性,这个属性值为true表示设备能上网,值为false表示设备离线。

    当然不同的浏览器,对这个的支持还不太一样

    IE6+和Safari 5+支持的比较好

    Firefox 3+和支持navigator.onLine属性,但你必须手工选中菜单项“文件-Web开发人员(设置)-脱机工作”才能让浏览器正常的工作。

    Chrome需要12以上。

     方法二:

    当然,如果想支持的更兼容,可以使用如下2个事件:online和offline。当网络从离线变为在线或者从在线变为离线时,分别触发这两个事件。这两个事件在window对象上触发。

     为了检测应用是否离线,在页面加载后,最好先通过navigator.onLine取得初始的状态。然后,就是通过上述两个事件来确定网络连接状态是否变化。当上述事件触发式,navigator.onLine属性的值也会改变,不过必须要手工轮询这个属性才能检测到网络状态的变化。

    var EventUtil = {
        addHandler: function (element, type, handler) {
            if (element.addEventListener) {
                element.addEventListener(type, handler, false);
            } else if (element.attachEvent) {
                element.attachEvent("on" + type, handler);
            } else {
                element["on" + type] = handler;
            }
        }
    };
    
    EventUtil.addHandler(window, "online", function () {
        alert("Online");
    });
    EventUtil.addHandler(window, "offline", function () {
        alert("Offline");
    });


  • 相关阅读:
    C++进阶--析构函数中的异常
    C++进阶--派生类的析构(虚析构函数,shared_ptr)
    linux_shell_拆分文件_多进程脚本
    java_eclipse_设置全局编码_utf-8_编译class指定_运行jar乱码解决_不依赖环境
    linux_环境变量设置 utf-8
    linux_awk_内部正则过滤
    java_Eclipse中SVN的安装步骤(两种)和使用方法
    linux_vim_快捷键
    php_公共方法01_传入数组_打印可见信息
    linux_sed 正则替换
  • 原文地址:https://www.cnblogs.com/superch0054/p/4010053.html
Copyright © 2020-2023  润新知