【问题标题】:Check if no Internet Connection - Popup - Windows 10 App(Javascript)检查是否没有 Internet 连接 - 弹出窗口 - Windows 10 App(Javascript)
【发布时间】:2016-04-07 09:02:51
【问题描述】:

您好, 我在互联网上搜索,找不到完整的“教程”,如何编写代码,如果没有互联网连接会自动显示错误消息。我从 Visual Studio 开始使用 Javascript 创建 Windows 10 应用程序。我四处搜索,并在 stackoverflow 上找到了一些使用 jQuery 或 AJAX 的示例,但似乎不适用于我的应用程序。有人可以分享一个代码,我可以把它放在我的应用程序中吗?

我为我的网站创建了一个应用程序,具有一些附加功能,并且需要互联网连接。

谢谢

【问题讨论】:

  • 你可以向example.com发出一个Ajax请求,看看它是否失败。
  • 在任何现代浏览器中,你只需要navigator.onLine
  • developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine/onLine 不错。不支持 Opera, :( 虽然活动真的很棒
  • 我想创建一个应用程序,而不是一个网站,而且我不使用任何浏览器。我只需要一个代码,它在 javascript 检查并检测互联网连接,如果没有,则会出错,但感谢您的回复。
  • 那么您使用的是 WinJS,还是什么?也许你应该添加适当的标签?

标签: javascript jquery windows uwp internet-connection


【解决方案1】:

您可以使用NetworkConnectivityLevelNetworkInformation.getInternetConnectionProfilegetNetworkConnectivityLevel 来执行此操作,并在default.js 中使用MessageDialog 显示信息,如下所示:

var connections = Windows.Networking.Connectivity.NetworkInformation.getInternetConnectionProfile();
if (connections != null) {
    var networkConnectivityLevel = connections.getNetworkConnectivityLevel();
    if (networkConnectivityLevel == Windows.Networking.Connectivity.NetworkConnectivityLevel.internetAccess) {
        var msg = new Windows.UI.Popups.MessageDialog("Internet access OK.");
    } else if (networkConnectivityLevel == Windows.Networking.Connectivity.NetworkConnectivityLevel.constrainedInternetAccess) {
        var msg = new Windows.UI.Popups.MessageDialog("Limited internet access.");
    } else if (networkConnectivityLevel == Windows.Networking.Connectivity.NetworkConnectivityLevel.localAccess) {
        var msg = new Windows.UI.Popups.MessageDialog("Local network access only.");
    } else if (networkConnectivityLevel == Windows.Networking.Connectivity.NetworkConnectivityLevel.none) {
        var msg = new Windows.UI.Popups.MessageDialog("No internet access.");
    }
    msg.showAsync();
} else {
    var msg = new Windows.UI.Popups.MessageDialog("No internet access.");
    msg.showAsync();
}   

【讨论】:

  • 谢谢,它有效!但是当我有 Internet 连接时可以工作。当我禁用 Internet 连接时,启动应用程序时出现错误:0x800a138f - JavaScript 运行时错误:无法获取未定义或空引用的属性“getNetworkConnectivityLevel”
  • 我无法在我的机器上重现此问题,但从您的异常中,我可能知道问题出在哪里。你能再试试我更新的代码吗? @o'Bass
  • 我一直遇到 navigator.onLine 在断开连接并重新连接到 WiFi 网络后无法在 UWP 应用中报告连接的问题。这非常有效。
【解决方案2】:
$.get('/').fail(function(){
    //request failed for some reason.  probably internet down
    console.log("your internet is down");
});

【讨论】:

    【解决方案3】:

    你可以使用一些HTTP测试服务如下:

    <html>
    <body>
    <div id="status" style="width:100px;height:40px;"></div>
    <script>
    function GetConnectionStatusToElement(element) {
        var request = new XMLHttpRequest();
        request.open("GET", "https://httpbin.org/", true);
        request.onload = function () {
           element.innerHTML = "Connected"; 
        };
        request.onerror = function () {
           element.innerHTML = "Not Connected";
        };
        request.send();
    }
    GetConnectionStatusToElement(document.getElementById("status"));
    </script>
    </body>
    <html>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-23
      • 2011-09-10
      • 1970-01-01
      • 2010-10-21
      • 1970-01-01
      • 2015-09-18
      • 2014-12-09
      相关资源
      最近更新 更多