PhoneGap InAppBrowser:无法打开带有“%”字符的链接
Posted
技术标签:
【中文标题】PhoneGap InAppBrowser:无法打开带有“%”字符的链接【英文标题】:PhoneGap InAppBrowser: Cannot open link with "%" character 【发布时间】:2013-02-18 11:43:16 【问题描述】:我在我的 ios 项目中使用 PhoneGap 2.4。
当我想通过window.open(url, "_blank");
在新的 web 视图层中打开外部 URL 时,这适用于“简单”URL,例如“http://www.google.com”。
但是
包含空格和特殊字符的更复杂的 URL 是一个问题。为了避免这种情况,我通过这个 javascript 调用对它们进行 URL 编码:
url = encodeURIComponent(url);
这不适用于 InAppBrowser 插件。相反,我收到一条错误消息:
webView:didFailLoadWithError - 操作无法完成。 (WebKitErrorDomain 错误 101。)
所以,我对此进行了调查,发现对window.open(url, "_blank");
的调用失败并显示此错误消息如果 url 包含“%”字符,例如如果空白字符被编码为“%20”。
我该如何解决这个问题?这不是bug吗?
更新:我刚刚在 android 上使用 PhoneGap 2.3 测试了同一个应用。奇迹般有效。所以这要么是 iOS 问题,要么是最新的 PhoneGap 版本 2.4 的问题。
【问题讨论】:
【参考方案1】:该死,我才发现问题。我的网址中有一个未编码的空格。我用“%20”替换了它,现在它可以工作了。
我想我变老了:-(
【讨论】:
【参考方案2】:尝试用转义键包围 %
【讨论】:
不,没用。我添加了url = url.replace(/%/g, '\\%');
,这导致在每个 % 之前都有一个前导 `\`,但仍然是相同的错误。【参考方案3】:
尝试改用 encodeURI(参见快速示例): http://docs.phonegap.com/en/2.4.0/cordova_inappbrowser_inappbrowser.md.html#window.open
【讨论】:
没有效果,已经试过了。除此之外escape()
似乎也没有解决问题。以上是关于PhoneGap InAppBrowser:无法打开带有“%”字符的链接的主要内容,如果未能解决你的问题,请参考以下文章
phonegap Inappbrowser 不显示位置栏(ios)
Cordova/PhoneGap 打开下载的文件 (InAppBrowser)