我在使用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