2014-03-28 23 views
0

我正在研究的東西,將檢測是否有連接到互聯網。這可以通過ping圖像文件來查看它是否存在。雖然代碼作爲一個整體起作用,但我希望它不會回發,如果它是脫機的(因爲它是一個將在線託管的頁面 - 所以如果它在脫機時回發,那麼它會重新加載頁面並執行「找不到頁面」 ),但仍顯示「脫機」消息:Javascript - 使用一個按鈕來確定是否在線

<asp:Button ID="Button1" runat="server" OnClientClick="ifServerOnline()" Text="Button" /> 

     <script type="text/javascript"> 
      function ifServerOnline(ifOnline, ifOffline) 
      { 
       var img = document.body.appendChild(document.createElement("img")); 
       img.onload = function() 
       { 
        ifOnline && ifOnline.constructor == Function && ifOnline(); 
       }; 
       img.onerror = function() 
       { 
        ifOffline && ifOffline.constructor == Function && ifOffline(); 
       }; 
       img.src = "http://www.mypage.com/pixel.jpg?" + Date.now; 
      } 

      ifServerOnline(function() 
      { 
       alert("Online"); 
      }, 
      function() 
      { 
       alert("Offline"); 
      }); 
     </script> 

顯然mypage.com不存在(除非它,但它不是我的)。

編輯 - 最終代碼:

<asp:Button ID="Button1" runat="server" OnClientClick="return ifServerOnline(ifServerOnline1, ifServerOffline1);" Text="Button" /> 

     <script type="text/javascript"> 
      function ifServerOnline(ifOnline, ifOffline) 
      { 
       var img = document.body.appendChild(document.createElement("img")); 
       img.onload = function() 
       { 
        ifOnline && ifOnline.constructor == Function && ifOnline(); 
       }; 
       img.onerror = function() 
       { 
        ifOffline && ifOffline.constructor == Function && ifOffline(); 
       }; 
       img.src = "http://www.mypage.com/pixel.jpg?" + Date.now; 
       return false; 
      } 

      function ifServerOnline1() 
      { 
       alert("Online"); 
       return false; 
      } 
      function ifServerOffline1() 
      { 
       alert("Offline"); 
       return false; 
      } 
     </script> 

回答

1

常用的方法是簡單地在處理程序的最後返回false來防止默認控件的行爲(在按鈕的情況下,是張貼的形式):

function ifServerOnline(ifOnline, ifOffline) 
{ 
    ... 

    return false; 
} 

你也可能需要此客戶端點擊處理器(確保參數傳遞給ifServerOnline功能:

OnClientClick="return ifServerOnline(ifServerOnline, ifServerOffline);" 

最後一件事。此方法確保點擊後沒有回發。如果你仍然想在網上發佈回帖 - 你可能必須在ifServerOnline處理程序中手動執行。

更新。跟進評論的討論 - 定義回調函數的最簡單的方法你會:

function ifServerOnline() 
{ 
    alert("Online"); 
} 

function ifServerOffline() 
{ 
    alert("Offline"); 
} 
+0

仍然張貼回來,如果我把它添加到ifServerOnline(ifOnline,ifOffline),即結束 - 在img.src網址後/ – user25730

+0

@ user25730,您是否也編輯了「OnClientClick」值?另外請注意,如果你有其他訂閱這個按鈕的點擊,這可能不起作用 – Andrei

+0

我想''asp:Button ID =「Button1」runat =「server」OnClientClick =「return ifServerOnline()」Text =「Button」/ >'。 –

相關問題