1

我正在尝试打开一个 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# 文件:http ://www.xyz.com/js/jquery/SmartphoneJquery/jquery-2.0.0.js行:1612 "

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

mscorlib.dll 中发生了“System.Reflection.TargetInvocationException”类型的第一次机会异常

错误:ProcessCommand 中的异常 :: TargetInvocationException

错误:InvokeMethodNamed :: 在 Object :: InAppBrowser 上打开失败

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

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

以下是调用堆栈中的日志

System.dll!System.Uri.CreateThis(string uri, bool dontEscape, System.UriKind uriKind) + 0xc4 字节
System.dll!System.Uri.Uri(string uriString, System.UriKind uriKind) + 0x1d 字节
WPCordovaClassLib.dll!WPCordovaClassLib .Cordova.Commands.InAppBrowser.ShowSystemBrowser(字符串 url) + 0xe 字节 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.CultureInfoculture, bool isBinderDefault, System.Reflection.Assembly caller, bool verifyAccess, ref System.Threading.StackCrawlMark堆栈标记)
mscorlib.dll!System.Reflection.RuntimeMethodInfo.InternalInvoke(object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object[] parameters, System.Globalization.CultureInfoculture, ref System.Threading.StackCrawlMark stackMark) + 0x168 字节 mscorlib.dll!System.Reflection.MethodBase.Invoke(object obj, object[] 参数) + 0xa 字节
WPCordovaClassLib.dll!WPCordovaClassLib.Cordova.Commands.BaseCommand.InvokeMethodNamed(string methodName, object[] args) + 0x13 字节
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(object state) + 0xb bytes
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 字节

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

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

4

1 回答 1

0

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

var ref = window.open(encodeURI('http://www.xyz.com/download.aspx'), '_system');
于 2013-08-01T14:26:04.510 回答