Javascript 在PhoneGap的浏览器中打开链接(使用非本地index.html根目录)

Javascript 在PhoneGap的浏览器中打开链接(使用非本地index.html根目录),javascript,html,cordova,uiwebview,webview,Javascript,Html,Cordova,Uiwebview,Webview,我看到了一些关于如何在浏览器中打开链接而不是像和这样的WebView的不同讨论。不过,我很难让这两个文件中的任何一个正常工作,我想知道这是否是因为我加载的URL不是本地index.html文件。这是我的设置 我正在加载一个URLwww.example.com。我希望在浏览器中打开www.non-example.com中的所有URL,同时将所有子URL加载到我的WebView中。我编辑了cordova.xml以便 <access origin="http://www.example.com"

我看到了一些关于如何在浏览器中打开链接而不是像和这样的WebView的不同讨论。不过,我很难让这两个文件中的任何一个正常工作,我想知道这是否是因为我加载的URL不是本地
index.html
文件。这是我的设置

我正在加载一个URL
www.example.com
。我希望在浏览器中打开
www.non-example.com
中的所有URL,同时将所有子URL加载到我的WebView中。我编辑了
cordova.xml
以便

<access origin="http://www.example.com"/>

在我的Android设备中点击它,它只会在WebView而不是浏览器中打开它。我不知道这是否相关,但我用这个版本将我的PhoneGap更新为2.2,并在与我的
index.html
相同的级别添加了一个
config.xml
(尽管我不确定它是否被使用,因为我没有从头开始重新创建我的Android项目)。因此,我的问题可以归结为:

1) 如果使用非本地index.html,如何确保URL在浏览器中打开


2) 我如何知道是否正在使用我的
config.xml
文件?

我刚刚尝试了您描述的内容,它在Cordova 2.3上运行良好

广告1)

您是否确保删除了其他冲突的访问规则,即默认规则(访问原点=“*”)-最宽松的规则获胜

广告2)

在重建项目之前清理项目,以确保使用更新的config.xml


如果你想强制执行一个确切的行为,你可以使用一个插件和本地代码,尽管打开浏览器这可能有点过分。

似乎有一个公认的答案。要点看起来像是您可以调用navigator对象并告诉它打开一个链接,传递一个参数{external:true}。我还没有测试过,祝你好运

是的,我在访问中没有任何其他规则。您是否使用非本地索引加载它。html:)我一直想知道这是否会导致问题。@Waynn-我尝试的链接是指向一个非本地(外部)网站。嗯,我刚刚在Cordova 2.5上测试了它,但似乎无法让它工作。我在
config.xml
上唯一没有注释的规则是
“/>。但是当我有一个到
amazon.com
的链接时,它仍然在WebView中打开,而不是在浏览器中打开。是的,我知道你可以使用navigator对象,但是PhoneGap的文档()暗示你可以只使用_target=“blank”,它应该可以工作。嗯。链接上说”我们试图通过将每个支持白名单的平台(Android、iOS和BlackBerry)上的默认白名单设置为通配符来缓解这一问题。“。要问一个显而易见的问题:您的config.xml中不再有通配符了,是吗?apk只是一个jar文件。您可以使用java jar-xf.apk并在res目录中检查config.xml是否确实是您的xml文件。关于apk是否确实包含您的自定义config.xml的任何更新?我使用了
jar-xf.apk
,它似乎使用了最初的res/xml/config.xml。如果我在res/xml和assets/www中都定义了config.xml,那么它们都被使用了吗?或者其中一个会覆盖另一个?当您在本地编译PG应用程序时,您会将config.xml放入res/xml中。我认为,在使用PGBuild时,您应该将config.xml放入assets/www文件夹,因为在上载网站时,您实际上无法访问任何本机项目。我的直觉是,assets/www/config.xml被移动到res/xml/config.xml,以便在本地编译和PGBuild编译中保持一致。基于此,我认为默认的config.xml是由应用程序获取的,这导致了问题。
<a href="http://www.non-example.com" target="_blank">Foo</a>