2014-02-07 169 views
3

我使用Cordva(v3.3.0)和JQuery Mobile为Android和iOS构建应用程序。 现在我正在尝试使用InAppBrowser插件。在Android上,这工作正常,但在iOS上,该网页似乎在科尔多瓦WebView中打开,而不是在系统浏览器中打开。问题在于,打开浏览器后无法立即返回到应用程序,因为没有位置栏/后退按钮。iOS /科尔多瓦:InAppBrowser不工作

我已经tryed删除插件,并重新添加它,我也更新科尔多瓦到最新版本(3.3.0)

任何人可以帮助我找到的Bug?

谢谢!

config.xml中

<access origin="*" /> 
<feature name="InAppBrowser"> 
    <param name="ios-package" value="CDVInAppBrowser" /> 
</feature> 

的index.html

<a href="#" onclick="window.open('http://google.com', '_system', 'location=yes');" data-role="button" data-icon="arrow-r" data-iconpos="right">Google</a> 

日志输出

Resetting plugins due to page load. 
Finished load of: https://www.google.ch/?gws_rd=cr&ei=hj31Up7fEYXgygXXXXXXXX 
+0

你有没有发现错误?我也有同样的问题? – ToughPal

+0

看看我写给这个问题的答案。 –

回答

4

就找到了解决办法。

iOS cordova_plugins.js文件中缺少以下条目。在Android它是可用的....

{ 
    "file": "plugins/org.apache.cordova.core.inappbrowser/www/InAppBrowser.js", 
    "id": "org.apache.cordova.core.inappbrowser.InAppBrowser", 
    "clobbers": [ 
     "window.open" 
    ] 
}, 
+0

不错的发现!请注意'org.apache.cordova.inappbrowser'不在该文件的'module.exports.metadata'哈希中。不幸的是,'platforms/ios/www/cordova_plugins.js'是自动生成的,当我构建时,我对它所做的任何更改都会被替换。此外,'plugins/org.apache.cordova.inappbrowser/plugin.xml'似乎可以正确定义iOS的'clobbers'数组。这令人费解。 – James

+0

为我解决。当我删除除了InAppBrowser之外的所有插件时,'cordova_plugins.js'已正确更新。然后,我一次添加一个插件,在每次编译后检查'cordova_plugins.js',直到找到触发该错误的插件。不知道如何修复这个插件,但是我不再使用它了。 – James

+0

其中是cordova_plugins文件的位置? – AN11

0

对我来说,问题是与Visual Studio科尔多瓦工具。我更新了Cordova CLI到5.1.1,但是在visual studio config.xml> Platform部分,我仍然有4.3.3。因此,当我使用最新的inappbrowser与新名称cordova-plugin-inappbrowser导致它不起作用。

因此,如果您使用Visual Studio,请确保config.xml中的版本与命令行相同。 (使用科尔多瓦-version,以获得正确的版本)

1

你应该在标题来更改页面元至

<meta http-equiv="Content-Security-Policy" content="img-src * 'self' data:; default-src * 'self' gap: wss: ws: ; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval';"> 

这对我的作品。