如何在未连接互联网时在浏览器上自定义消息

时间:2015-11-13 07:16:08

标签: c# asp.net .net

我希望在我的网络应用程序无法连接到互联网时显示自定义消息。

目前,当我的互联网连接失败时,浏览器会显示"unable to connect" or "server not found"。所以我想在我的页面上显示我的自定义消息。

我写了这个:

bool bb = System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();
if (bb == true)
{
  //custom message
}
else
   //meesage

但它仍然没有用。

我该如何展示?

2 个答案:

答案 0 :(得分:2)

我认为您期望从浏览器连接互联网,如果是这样,请使用navigator.onLine;

Tr.WH.Eu6.ISC

答案 1 :(得分:0)

定期从客户端呼叫服务器,如果没有应答或没有预期应答 - 显示错误消息。

网络表单: 使用ProcessRequest的实现创建处理程序,如下所示:

public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        context.Response.Write("Ok");
    }

mvc : 用这样简单的结果创建动作:

public ActionResult CheckInternetConnection()
{
    return Json("Ok");
}

当然,此请求处理程序不应要求任何授权或其他预处理

然后创建js timer和请求方法

var maxTime = <your interval time>;
var timer;

//write own method for check request
function performRequest() {
    var xhr = new XMLHttpRequest();

    // reserve 1 sec for timeout function execution
    // if we didn't - you can get a situation when 
    // simultaneously performing more than 1 request
    xhr.timeout = maxTime - 1000; 
    xhr.ontimeout = function {
        //waiting to long
        alert('<your message>');
        window.clearInterval(timer);
    };

    xhr.open('GET', '<url of your check connection handler>', true);

    xhr.send();

    xhr.onreadystatechange = function () {
        if (xhr.readyState != 4)
            return;

        if (xhr.responseText !== 'OK') {
            //Can't access to handler
            alert('<your message>');
            window.clearInterval(timer);
        }
    }
}

//after page load start request timer
document.onload += function () {
    timer = window.setInterval(performRequest, maxTime);
}

我还没有调试这段代码。