繁体   English   中英

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

[英]HTML5 phonegap webapp open links in safari or other native app

我有一个工作,接受和批准的苹果,html5 phonegap webapp但我无法获得外部链接打开safari或地图应用程序。 Android版本的问题是一样的。

发生的事情是,当点击/点击链接时,我猜,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');
});

我已经阅读了关于configg 页面链接到phonegap的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绑定是在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'而不是system。 例:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM