5

在主页中,我使用了 registerForNetworkStatusChangeNotif() 函数(我从 MSDN 借来的)来注册网络通知更改。该函数添加了一个事件监听器networkstatuschanged,它仅适用于该页面,即当连接中断时显示错误,并且在恢复连接时自动刷新页面 -

var networkInfo = Windows.Networking.Connectivity.NetworkInformation; ... networkInfo.addEventListener("networkstatuschanged", onNetworkStatusChange);

我应该如何处理其他页面的 Internet 可用性检查?

我尝试在 default.js 中注册此功能,以便它可用于所有页面。我的应用程序使用地理定位功能,并且 statuschanged 事件与 networkstatuschanged 事件发生冲突,并且我的应用程序无法显示 Internet 连接丢失错误。如何解决此问题,以便正确处理 Internet 连接不可用。

4

2 回答 2

3

您需要收听特定事件。当它触发时,您会检查互联网连接。

var networkInformation = Windows.Networking.Connectivity.NetworkInformation;
...

ready: function(element, options)
{
   // Registering for connection change
   networkInformation.addEventListener("networkstatuschanged", this.onNetworkStatusChanged);
   ...
}

unload: function()
{
   // Unregistering for connection change
   networkInformation.removeEventListener("networkstatuschanged", this.onNetworkStatusChanged);
   ...
}

onNetworkStatusChanged: function(eventArgs)
{
    // Retrieve the InternetConnectionProfile
    var internetConnectionProfile = networkInformation.getInternetConnectionProfile();
    // Accesses the NetworkConnectivityLevel
    var networkConnectivityLevel = internetConnectionProfile.getNetworkConnectivityLevel();
    // Switch on NetworkConnectivityLevel
    switch (networkConnectivityLevel) {
        case Windows.Networking.Connectivity.NetworkConnectivityLevel.none:
           ...
        case Windows.Networking.Connectivity.NetworkConnectivityLevel.localAccess:
           ...
        case Windows.Networking.Connectivity.NetworkConnectivityLevel.constrainedInternetAccess:
           ...
        case Windows.Networking.Connectivity.NetworkConnectivityLevel.internetAccess:
           ...
    }
    ...
}
于 2013-04-10T09:56:51.140 回答
1

我希望自动页面“刷新”是由于数据绑定。要获得更多控制权,您需要在“ready”页面上绑定到 Networking 对象,并在“unload”页面上再次取消绑定。例如:

var networkInfo = Windows.Networking.Connectivity.NetworkInformation;
this.networkHandler = this._doSomething();
...
..

ready: function(element, options)
{
   networkInfo.addEventListener(this.networkHandler);
   ...
   ..
}

unload: function()
{
   networkInfo.removeEventListener(this.networkHandler);
   ...
   ..
}

_doSomething : function(event)
{
    // Examine the 'event' object and perform 'refresh' accordingly
    // Most likely a call to WinJS.Binding.processAll(...)
}

然后,您需要定义处理程序方法“_doSomething()”来检查“事件”对象传递的连接细节并相应地触发您的绑定/刷新逻辑。

希望这可以帮助!

于 2013-01-11T19:32:23.243 回答