2015-11-13 35 views
0

我想在我的Web應用程序無法連接到互聯網時顯示自定義消息。如何在互聯網未連接時在瀏覽器上自定義消息

目前,當我的互聯網連接失敗時,瀏覽器顯示"unable to connect" or "server not found"。所以我想在我的頁面上顯示我的自定義消息。

我寫了這個:

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

但仍是不能正常工作。

我該如何顯示?

+2

Aehem。未找到服務器,無法連接意味着瀏覽器無法連接到服務器。那麼服務器應該怎樣才能向瀏覽器發送消息呢? – Thomas

+0

選中此項:http://www.asp.net/web-forms/overview/older-versions-getting-started/deploying-web-site-projects/displaying-a-custom-error-page-cs –

+0

是的。但有什麼辦法來顯示緩存中的消息? – deepak

回答

2

我認爲你期望從瀏覽器的互聯網連接,如果是這樣的話,使用navigator.onLine;

<script type="text/javascript"> 
    var isOnline = navigator.onLine; 
    if (!isOnline) 
     alert("Your custom message for no internet connectivity!!!"); 
</script> 
+0

號碼,當我斷開互聯網然後它仍然顯示無法連接消息,而不是此自定義警報消息。 – deepak

+0

您的瀏覽器可能不支持,它適用於IE和Chrome瀏覽器 - 我已經在這些瀏覽器中測試過。 –

+0

我正在檢查移動Chrome瀏覽器,它也不能在Firefox中工作。 – deepak

0

定期從客戶端調用服務器,如果沒有答案或不期待答案 - 顯示錯誤消息。

網絡形成: 創建的處理程序與ProcessRequest implemetation這樣的:

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); 
} 

我還沒有調試代碼。