我想在我的 jquery 移动应用程序(phongap 构建)中打开一个外部链接,但所有外部链接都在浏览器中打开

Posted

技术标签:

【中文标题】我想在我的 jquery 移动应用程序(phongap 构建)中打开一个外部链接,但所有外部链接都在浏览器中打开【英文标题】:I want to open an external link inside my jquery mobile app (phongap build) but all external links open in browser 【发布时间】:2015-10-11 02:03:41 【问题描述】:

这是我第一次使用 phonegap 构建,我无法在我的应用程序中打开外部链接。我正在使用 jquery mobile 和 phonegap build 来发布一个 android 应用程序。在更新到 cli-5.2.0 之前,我可以使用以下代码打开应用程序内的外部链接

window.open('http://www.google.com','_self',false);

但是,在 cli-5.2.0 更新后,任何外部链接现在只能在 Chrome 或应用内浏览器中打开。有没有办法在应用内打开外部链接?

这是我的 config.xml 文件以防万一

<?xml version='1.0' encoding='utf-8'?>
    <widget id="com.test.chat" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0" xmlns:gap="http://phonegap.com/ns/1.0">

<name>Test 3.0</name>

<description>Test App</description>

<author email="dev@cordova.apache.org" href="http://cordova.io">Author
</author>
  <platform name="android">
    <allow-intent href="market:*" />
</platform>
<preference name="phonegap-version" value="cli-5.2.0" />
<content src="index.html" />
<gap:plugin name="cordova-plugin-whitelist" source="npm" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />

<preference name="permissions" value="none"/>
<preference name="orientation" value="portrait"/>
<preference name="target-device" value="universal"/>
<gap:plugin name="org.apache.cordova.splashscreen" source="npm"/>
<!--<gap:plugin name="org.apache.cordova.inappbrowser" source="npm"/>-->

<feature name="http://api.phonegap.com/1.0/geolocation"/>
<preference name="SplashScreen" value="screen" />
<preference name="SplashScreenDelay" value="5000" />  
<preference name="fullscreen" value="true" />-->
<gap:splash gap:platform="android" gap:qualifier="port-ldpi"  src="res/drawable-port-ldpi/screen.png" />
<gap:splash gap:platform="android" gap:qualifier="port-mdpi"  src="res/drawable-port-mdpi/screen.png" />
<gap:splash gap:platform="android" gap:qualifier="port-hdpi"  src="res/drawable-port-hdpi/screen.png" />
<gap:splash gap:platform="android" gap:qualifier="port-xhdpi" src="res/drawable-port-xhdpi/screen.png" />
<gap:splash gap:platform="android" gap:qualifier="port-xxhdpi" src="res/drawable-port-xxhdpi/screen.png" />
<gap:splash gap:platform="android" gap:qualifier="port-xxxhdpi" src="res/drawable-port-xxxhdpi/screen.png" />
<gap:splash src="splash.png"/>

<icon src="icon.png" />

<icon src="res/drawable-port-ldpi/ldpi.png" gap:platform="android" gap:qualifier="ldpi" />
<icon src="res/drawable-port-mdpi/mdpi.png" gap:platform="android" gap:qualifier="mdpi" />
<icon src="res/drawable-port-hdpi/hdpi.png" gap:platform="android" gap:qualifier="hdpi" />
<icon src="res/drawable-port-xhdpi/xhdpi.png" gap:platform="android" gap:qualifier="xhdpi" />
<icon src="res/drawable-port-xxhdpi/xxhdpi.png" gap:platform="android" gap:qualifier="xxhdpi" />
<icon src="res/drawable-port-xxxhdpi/xxxhdpi.png" gap:platform="android" gap:qualifier="fr-xxhdpi" />
</widget> 

【问题讨论】:

【参考方案1】:

您已将 inappbrowser 插件注释掉。只需取消注释以下行

<gap:plugin name="org.apache.cordova.inappbrowser" source="npm"/>

或尝试在 config.xml 中进行以下操作:

<gap:plugin name="org.apache.cordova.inappbrowser" version="0.5.2" />

这应该可行。

【讨论】:

确保在启动链接的网页上使用 CSP(内容安全策略)。文档位于 white-list plugin 的底部 @krunal 感谢您的回复。不幸的是,这不是我要找的。我不希望链接在应用内浏览器或手机浏览器(在本例中为 chrome)中打开。我希望页面在应用程序本身内打开 好的。下面的链接可能会有所帮助。 link1 和 link2

以上是关于我想在我的 jquery 移动应用程序(phongap 构建)中打开一个外部链接,但所有外部链接都在浏览器中打开的主要内容,如果未能解决你的问题,请参考以下文章

我想在我的 jQuery 数据表插件中添加复选框

在我的着色器中实现 phong 着色(过度纹理)的错误

jQuery mobile 的图片库

自己实现带有光线投射的 phong 照明

jquery $(window).resize 事件在移动向上或向下滚动时触发

jQuery UI Slider:沿着(连同)句柄移动值