2014-04-01 17 views
0

我在使用JavaScript函數中的navigator.connection獲取值時遇到問題。我有兩個函數試圖返回數據,並且都拋出錯誤,指出System.SystemException。navigator.connection不會返回HTML5中的值

//Connection Type 
    function getConnectionType() { 
     //var connectionType = navigator.connection; 
     var connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection; 
     var connectionType = connection.type 

     window.external.notify("COT" + connectionType.toString()); 
    } 

//Bandwidth 
function getBandwidth() { 
     //var online = navigator.onLine; 
     var connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection; 
     var bandwidth = connection.bandwidth 

     //window.external.notify("BAN" + bandwidth.toString() + " Mbps"); 
     window.external.notify("BAN" + bandwidth.toFixed(2) + " Mbps"); 
    } 

我打電話使用InvokeScript這個功能在C#

private void RunPerformanceTestButton_Click(object sender, RoutedEventArgs e) 
    { 
     //Bandwidth 
     object bandwidth = Browser.InvokeScript("getBandwidth"); //Error 

     //Connection Type 
     object connectionType = Browser.InvokeScript("getConnectionType"); //Error 
    } 

private void Browser_ScriptNotify(object sender, NotifyEventArgs e) 
    { 
     string value = null; 
     string statistic = null; 

     statistic = e.Value.Substring(0, 3); 
     value = e.Value.Substring(3);  

     switch (statistic) 
     { 
      //Bandwidth 
      case "BAN": 
       BANResultTextBlock.Text = value; 
       break; 
      //Connection type 
      case "COT": 
       COTResultTextBlock.Text = value; 
       break; 
      default: 
       return; 
     } 
    } 

錯誤

System.SystemException was unhandled by user code
HResult=-2146233087 Message=An unknown error has occurred. Error: 80020101. Source=Microsoft.Phone.Interop StackTrace: at Microsoft.Phone.Controls.NativeMethods.ValidateHResult(Int32 hr) at Microsoft.Phone.Controls.WebBrowserInterop.InvokeScript(String scriptName, String[] args) at Microsoft.Phone.Controls.WebBrowser.InvokeScript(String scriptName) at Network_Performance_Test.MainPage.RunPerformanceTestButton_Click(Object sender, RoutedEventArgs e) at System.Windows.Controls.Primitives.ButtonBase.OnClick() at System.Windows.Controls.Button.OnClick() at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e) at System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e) at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName) InnerException:

我相信問題是navigation.connection。我使用這個相同的實現來返回window.performance.timing數據,它的工作原理非常完美。有任何想法嗎?我真的需要這些數據來提高性能和增強功能。要注意,這是所有在WebBrowser控件做過的Windows Phone 8

回答