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)

phonegap oauthio 插件无法加载

Phonegap inappbrowser 不工作

如何从 InAppBrowser 中调用 Phonegap 插件?

addEventListener('exit') 到 PhoneGap 中的 inappbrowser