【发布时间】:2014-02-04 17:07:42
【问题描述】:
我有一个工作的、被苹果接受和批准的 html5 phonegap webapp,但我无法获得打开 safari 或地图应用程序的外部链接。安卓版也是一样的问题。
发生的情况是,当点击/点击链接时,我猜,phonegap inappbrowser 会抓取 window.open 事件并将外部页面加载到当前窗口实例中,并且没有返回键。
应用程序现在只会显示外部加载的页面,直到退出并重新启动。
我已经阅读了大量关于此的 cmets 和论坛。我已按照我能找到的所有选项进行操作,但问题仍然存在。
谁能告诉我哪里出了问题,因为我正在以惊人的速度脱发...
使用 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 page link to 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>
我一定错过了什么。最后我在 jquery.mobile 之前调用 mobileinit 绑定:
<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 导致了问题?
【问题讨论】:
-
我也有同样的问题,我发现的唯一方法是添加到 标记和 href 属性以及 target="_blank",而不是使用 javascript 以编程方式打开 url。希望对您有所帮助!
标签: javascript android jquery html cordova