javascript - HTML5 phonegap webapp 在 safari 或其他原生应用程序中打开链接

标签 javascript android jquery html cordova

我有一个有效的、被苹果接受和批准的 html5 phonegap 网络应用程序,但我无法获得打开 safari 或 map 应用程序的外部链接。安卓版也是一样的问题。

发生的情况是,当单击/点击链接时,我猜,phonegap inappbrowser 获取 window.open 事件并将外部页面加载到当前窗口实例中,并且没有后退键。

应用程序现在只会显示外部加载的页面,直到退出并重新启动。

我已经阅读了大量关于此的评论和论坛。我已按照我能找到的所有选项进行操作,但问题仍然存在。

谁能告诉我哪里出了问题,因为我正在以惊人的速度脱发......

使用 phonegap.js 和 jquery 在线构建 Phonegap 3.1。我正在通过 Jquery 捕获外部链接,一切正常。

请在下面找到我正在使用的代码。

// capture external link click or tap?
$(document).on('click', 'a[data-rel="external"]', function(e){
e.preventDefault();
var targetURL = $(this).attr("href");
console.log('external link: '+targetURL);
var ref = window.open(targetURL, '_system', 'location=yes');
});

我已经阅读了有关 config.xml 的 phonegap 文档 page link to phonegap这就是我添加的内容。

<preference name="phonegap-version" value="3.1.0" />
<plugin name="InAppBrowser" value="org.apache.cordova.InAppBrowser" />
<plugin name="InAppBrowser" value="CDVInAppBrowser" />

我还阅读了 Apple url-scheme-name 并在 config.xml 中使用它:

<gap:url-scheme name="com.canal-st.canal-st" role="None">
<scheme>mailto</scheme>
<scheme>tel</scheme>
<scheme>http</scheme>
</gap:url-scheme>

我一定是漏掉了什么。最后我调用 mobileinit bind 在 jquery.mobile 之前被调用:

<script src="js/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
$(document).bind("mobileinit", function(){
   $.support.cors = true;
   $.mobile.allowCrossDomainPages = true;
   $.mobile.pushState = false;
   console.log('in mobileinit');
});
</script>
<script src="js/jquery.mobile-1.3.1.min.js"></script>

我知道这里有很多此类问题,但没有一个解决方案有效,还是新版本的 phonegap 导致了问题?

最佳答案

您的 window.open 应该使用“_self”而不是系统。示例:

$(document).on('click', 'a[data-rel="external"]', function(e){
    e.preventDefault();
    ....
    var ref = window.open(targetURL, '_self', 'location=yes');
});

关于javascript - HTML5 phonegap webapp 在 safari 或其他原生应用程序中打开链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21558875/

相关文章:

javascript - Pinterest 扩展程序如何(临时)存储网页中的图像,然后在 iframe 中访问它们?

javascript - JS/Jquery - 如果输入有任何数组名称,则返回关联值

Jquery.live() 观察在 DOM 中加载新元素

javascript - JavaScript 中 typeof 和 instanceof 的区别

javascript - 将参数添加到传递的回调中

javascript - 将类(class)添加到最近的 child

Java Eclipse(android)无法将数据插入mongodb数据库

javascript - 旧版 IE 中 JSON 对象的问题

java - 从 JSON 或 XML 提要导入数据并在 Android 中创建列表

android - 有谁知道如何使用 android 2.1 创建一个带有 2 个按钮的消息气泡出现在 map 应用程序的 overlayitem 之上?