这个JAVASCRIPT办不到吧,最多就判断是否与某个服务器连通没,不能说明是否联网。

解决方案 »

  1.   

    给你个变相思路
    用XMLHTTP去检查http://www.baidu.com有没有字节返回 
    然后返回IP
      

  2.   

    <script type="text/javascript">
    window.onload=function(){
    checknet();
    setInterval(checknet,5*1000)
    }var tStart=null;function checknet(){
    var url="http://www.ajiang.net/aspcheck.asp";
    var conn=new XHConn();
    tStart=new Date();
    conn.connect(url,"GET","T=E&R="+Math.random(),callback);
    }function callback(response){
    var text=response.responseText;
    var tEnd=new Date();
    var speed=(text.length/(tEnd-tStart)).toFixed(3);
    if (text && text.indexOf("http://www.ajiang.net/products/aspcheck/")!=-1){
    var arr=text.match(/>REMOTE_ADDR<\/td><td[^>]*>([^<]+)<\/td><\/tr>/);     
    if (arr && arr.length>=2 && /(\d+)\.(\d+)\.(\d+)\.(\d+)/.test(arr[1])){
    addLog(arr[1]+"\t网速:\t"+speed+" k/s");
    }else{
    addLog("没有联网");
    }

    }else{
    addLog("没有联网");
    }
    }function addLog(msg){
    var output=document.getElementById("output");
    var now=new Date().toLocaleTimeString();
    output.value=output.value+now+"\tIP: "+msg+"\r\n"
    }
    function XHConn(){
      var xmlhttp, bComplete = false;
      try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
      catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
      catch (e) { try { xmlhttp = new XMLHttpRequest(); }
      catch (e) { xmlhttp = false; }}}
      if (!xmlhttp) return null;
      this.connect = function(sURL, sMethod, sVars, fnDone){
        if (!xmlhttp) return false;
        bComplete = false;
        sMethod = sMethod.toUpperCase();
        try {
          if (sMethod == "GET"){
            xmlhttp.open(sMethod, sURL+"?"+sVars, true);
            sVars = "";
          }else{
            xmlhttp.open(sMethod, sURL, true);
            xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
            xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
          }
          xmlhttp.onreadystatechange = function(){
            if (xmlhttp.readyState == 4 && !bComplete){
              bComplete = true;
              fnDone(xmlhttp);
            }};
          xmlhttp.send(sVars);
        }
        catch(z) { return false; }
        return true;
      };
      return this;
    }</script>
    <textarea id="output" style="margin:50px;width:70%;height:500px;overflow:auto" readonly></textarea>
      

  3.   

    当然,上面那个网速测试只能做一个参考,不足采信。因为传输的数据量太小了 不到 4k. 
    这样小的采集量不足以反映实际的网速,不过实现方法可供参考。可以尝试下载一个1MB 左右的文件来测试网速,那样更接近真实值一点