2012-11-13 11 views
5

Ana sayfada ağ bildirim değişikliğini kaydetmek için registerForNetworkStatusChangeNotif() işlevini (which I borrowed from MSDN) kullandım. Bu işlev bir olay dinleyicisi networktatuschanged ekler ve bu sayfa için iyi çalışır, yani bağlantı kesildiğinde ve bağlantı geri yüklendiğinde sayfa otomatik olarak yenilenirken bir hata gösterilir -Windows 8'de birden fazla sayfa için İnternet bağlantısının olup olmadığını nasıl kontrol edebilirim? HTML/JS uygulamasını mı depolarsınız?

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

Diğer sayfalar için Internet kullanılabilirlik kontrolünü nasıl ele almalıyım?

Bu işlevi varsayılan.js olarak kaydetmeyi denedim, böylece tüm sayfalar için kullanılabilir. Uygulamam Coğrafi konum özelliğini ve statustatged etkinlik çakışmasını networktatuschanged etkinliğiyle kullanıyor ve uygulamanız İnternet bağlantısı hatası kaybını gösteremedi. Bu sorunu nasıl çözebilirim, böylece İnternet bağlantısının olmaması uygun şekilde ele alınır.

+0

Bu olay dinleyicisini nasıl eklediğinizi görmek için biraz daha bağlam sağlayabilir misiniz? Onu herhangi bir yere kaldırdın mı? –

cevap

4

Belirli bir olayı dinlemeniz gerekiyor. Ve patladığında, internet bağlantısını kontrol edersin.

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: 
      ... 
    } 
    ... 
} 
2

Otomatik sayfanın 'yenileme' veri tabanından kaynaklanmasını beklerim. Daha fazla kontrole sahip olmak için, 'Hazır' sayfasındaki Networking nesnesine bağlamanız ve 'boşaltma' sayfasında yeniden açmanız gerekir. Örneğin:

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(...) 
} 

size gereken isteyen tüm 'olay' nesnesi tarafından geçirilen bağlantı bilgilerini incelemek ve buna göre bağlanma/yenileme mantığı tetiklemek için işleyici yöntemi '_doSomething()' tanımlamaktır.

Bu yardımcı olur umarız!

İlgili konular