【问题标题】:JavaScript Offline Detection - function not availableJavaScript 离线检测 - 功能不可用
【发布时间】:2017-08-14 21:29:21
【问题描述】:

我在理解 JavaScript 方面有些困难。

当我发出 ajax 请求并且用户没有连接到主服务器时,将使用函数 notify 调用 Connection 类。

因此,当我现在打开页面,禁用我的互联网并单击触发请求的按钮时,我会收到警报你没有互联网连接了。

也不错。但不会调用函数“备份”。我收到这样的错误:TypeError: this.backup is not a function。

那么我错过了什么吗? 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();
  }
}

【问题讨论】:

  • 对我来说工作正常:jsfiddle.net/d61cwhcq 尝试通过 DevTools 和操作系统“脱机”。文件仍然可以毫无问题地下载。 Chrome 60,Windows 10。
  • 它也适用于我:jsfiddle.net/pb3bm9jd
  • notify() 方法中检查this

标签: javascript function oop


【解决方案1】:

对不起, 错误是我通过这样的ajax请求将代码直接作为回调:

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

【讨论】:

    猜你喜欢
    • 2014-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    相关资源
    最近更新 更多