2014-10-10 58 views
1

問題檢查使用JavaScript

我要顯示一個警告,如果無線網絡連接斷開[即互聯網連接沒有網絡連接]。在我的網頁中,我有許多按鈕,彈出窗口等。用戶可以在離線狀態下點擊任何內容。但是我想顯示API調用是否失敗。每次點擊我都可以檢查navigator.onLine。但我不想寫幾個函數調用或線路。有沒有辦法通常使用jQuery,JS,Ajax?

喜歡$.ajax與錯誤「ALERT應當呼叫失敗造成由用戶動作顯示」。它不應該與任何div /頁面綁定。

嗨,我已經試過如下:

navigator.onLine // It works fine 

我用下面的一個提到。但它不起作用。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>  

鏈接我已經提到

Detect that the Internet connection is offline?

Check Internet connectivity with jquery

和幾個。

有什麼建議嗎?

+0

你知道如何編寫服務器端請求處理程序嗎?如果是,那麼你可以對它進行ajax調用,並檢查請求以查看是否存在連接錯誤,如果沒有發現連接錯誤。然後你必須有一個計時器來使這些請求每分鐘發生一次,間隔越短越快,當你的連接斷開時你會發現越快,但是發送太多而且會讓你的服務器停滯不前。使用請求處理程序而不是整個頁面的原因是讓服務器儘可能少地工作,只是爲了響應你的「ping」 – Snellface 2014-10-10 07:40:05

+0

另一種選擇,如果你只針對相當現代的瀏覽器,那麼可能工作(我有從來沒有嘗試過)是使用websockets。他們應該(以同樣的方式定期「桌面套接字」)能夠告訴你他們與服務器的連接何時丟失。你要做的就是讓你的頁面通過websocket連接到你的服務器,並保持連接的活動,只要連接還在那裏,你就「連接」了你的服務器。如果連接丟失,請重試連接,如果連接失敗,則保持重新連接,直到再次獲得連接,這意味着您再次上線 – Snellface 2014-10-10 07:42:37

+0

@Snellface謝謝。 – 2014-10-10 07:58:06

回答

1

您可以在這裏使用原生setInterval函數。例如,你的document.ready功能,或者別的地方,被早期加載頁面加載時,使用設定的時間間隔內:

setInterval(callbackFunction:,1000/*<--run function every interval in ms*/); 

,寫你的回調功能可按(可能是setInteraval以上)類似:

var callbackFunction = function(){ 
    if (navigator.online){ 
    //manipulate the DOM 
    } 
}; 

請記住,如果您操作DOM,並且回調函數(如果在調用setInterval()之外定義的話)應該首先聲明,則可以將其放入document.ready()函數中。

+1

我試過了。它工作正常。但是我只想在用戶觸發事件時調用函數。 – 2014-10-10 07:58:40

+0

@GopsAB把它放在'onclick'或'onchange'事件處理程序中,然後 – 2017-06-08 11:08:36

+0

建議的解決方案不適用於我,直到我將其更改爲'navigator.onLine'(注意大寫字母L,爲不知情的陷阱) – 2017-06-08 11:30:58