2017-08-14 108 views
0

我有一些理解JavaScript的麻煩。JavaScript離線檢測 - 功能不可用

當我發出ajax請求並且用戶沒有連接到主服務器時,將使用函數notify調用Connection類。

因此,當我現在打開該頁面時,禁用我的互聯網,然後單擊按鈕,該按鈕將觸發請求,我收到警報。您再也沒有互聯網連接。

不錯。但是「備份」功能不會被調用。我得到這樣的錯誤:TypeError:this.backup不是一個函數。

那麼我錯過了什麼? JavaScript是客戶端,所以爲什麼我不能執行該功能?

PS:當我執行功能通知時,當我有互聯網它工作。

function Connection() { 
    this.backup = function() { 
    var data = [["Backup_Scenario"], ["123"]]; 
    var csv = this.createCSV(data); 
    this.downloadCSV(csv); 
    } 

    this.notify = function() { 
    alert("You have no internet connection anymore"); 
    this.backup(); 
    } 

    this.createCSV = function(data) { 
    var lineArray = []; 
    data.forEach(function (infoArray, index) { 
     var line = infoArray.join(","); 
     lineArray.push(index == 0 ? "data:text/csv;charset=utf-8," + line : line); 
    }); 
    var csvContent = lineArray.join("\n"); 
    return csvContent; 
    } 

    this.downloadCSV = function(csv) { 
    var encodedUri = encodeURI(csv); 
    var link = document.createElement("a"); 
    link.setAttribute("href", encodedUri); 
    link.setAttribute("download", "backup.csv"); 
    document.body.appendChild(link); // Required for FF 
    link.click(); 
    } 
} 
+0

工作對我來說罰款:https://jsfiddle.net/d61cwhcq/嘗試通過DevTools和操作系統「脫機」。文件仍然沒有問題下載。 Chrome 60,Windows 10. – yuriy636

+0

它也適用於我:https://jsfiddle.net/pb3bm9jd/ – scuencag

+0

在您的notify()方法中檢查'this' – Thomas

回答

0

對不起, 的錯誤是,我直接把代碼回調由這樣一個Ajax請求:

connection = new Connection(); 
$.ajax({ 
    url: url, 
    error: connection.notify 
});