在Windows Phone 7中使用InAppBrowser插件时出现'System.UriFormatException'

时间:2013-06-10 08:29:03

标签: windows-phone-7 cordova inappbrowser

我正在尝试打开一个URL,该URL将启动从Windows Phone 7 PhoneGap应用程序中的服务器下载文件。

我在config.xml中启用了InAppBrowser插件,如下所示,并在服务器端添加了相关代码(我希望在系统浏览器中打开URL)

var ref = window.open('http://www.xyz.com/download.aspx','_ system');

但是当我试图打开它时,会抛出以下异常(从输出窗口)

System.dll

中出现'System.UriFormatException'类型的第一次机会异常

错误:“语法错误,无法识别的表达式:[data-role ='footer'] #sfdmfdOptionsNavbar li a#file:http://www.xyz.com/js/jquery/SmartphoneJquery/jquery-2.0.0.js Line:1612”

线程''(0xfc108e2)退出时代码为0(0x0)。

mscorlib.dll中出现'System.Reflection.TargetInvocationException'类型的第一次机会异常

错误:ProcessCommand :: TargetInvocationException中的异常

错误:无法在Object :: InAppBrowser上打开InvokeMethodNamed :: open

线程''(0xaa5031a)已退出代码0(0x0)。 AppClosing

注意:我已将原始IP更改为xyz.com以用于说明目的。原始ip是有效的,在我的环境中本地工作正常。

以下是来自调用堆栈的日志

  

System.dll!System.Uri.CreateThis(string uri,bool dontEscape,System.UriKind uriKind)+ 0xc4 bytes
      System.dll!System.Uri.Uri(string uriString,System.UriKind uriKind)+ 0x1d bytes
      WPCordovaClassLib.dll!WPCordovaClassLib.Cordova.Commands.InAppBrowser.ShowSystemBrowser(string url)+ 0xe bytes       WPCordovaClassLib.dll!WPCordovaClassLib.Cordova.Commands.InAppBrowser.open(字符串选项)+ 0x53字节       mscorlib.dll!System.Reflection.RuntimeMethodInfo.InternalInvoke(System.Reflection.RuntimeMethodInfo rtmi,object obj,System.Reflection.BindingFlags invokeAttr,System.Reflection.Binder binder,object parameters,System.Globalization.CultureInfo culture,bool isBinderDefault,System .Reflection.Assembly caller,bool verifyAccess,ref System.Threading.StackCrawlMark stackMark)
      mscorlib.dll!System.Reflection.RuntimeMethodInfo.InternalInvoke(object obj,System.Reflection.BindingFlags invokeAttr,System.Reflection.Binder binder,object [] parameters,System.Globalization.CultureInfo culture,ref System.Threading.StackCrawlMark stackMark)+ 0x168字节       mscorlib.dll!System.Reflection.MethodBase.Invoke(object obj,object [] parameters)+ 0xa bytes
      WPCordovaClassLib.dll!WPCordovaClassLib.Cordova.Commands.BaseCommand.InvokeMethodNamed(string methodName,object [] args)+ 0x13 bytes
      WPCordovaClassLib.dll!WPCordovaClassLib.Cordova.NativeExecution.ProcessCommand.AnonymousMethod__2(object func)+ 0x31 bytes       mscorlib.dll!System.Threading.ThreadHelper.ThreadStartHelper(System.Threading.ThreadHelper t)+ 0x34 bytes
      mscorlib.dll!System.Threading.ThreadHelper.ThreadStart_Context(对象状态)+ 0xb字节
      mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext,System.Threading.ContextCallback callback,object state)+ 0x63 bytes
      mscorlib.dll!System.Threading.ThreadHelper.ThreadStartHelper()+ 0x2a bytes

请让我知道出了什么问题。

注意:在Windows Phone 7 IE浏览器中,相同的URL可以正常工作。

1 个答案:

答案 0 :(得分:0)

尝试对您的网址使用 encodeURI()方法。我认为它会解决你的问题

var ref = window.open(encodeURI('http://www.xyz.com/download.aspx'), '_system');