[英]cordova inappbrowser cannot open an external url on iOS
我正在 phonegap 中开发一个混合应用程序,基本上我在索引页面中有一个按钮,只要点击它就会打开一个外部 url。 我在 Android 上成功,在 iOS 上失败。
我查了这些问题iOS/Cordova:InAppBrowser 不工作 -cordova /phonegap onclick 不起作用 -PhoneGap Build:如何在 Android 上的设备浏览器中打开外部 url? - phonegap 在浏览器中打开链接,但不幸的是,这些问题都没有帮助我解决问题。
第一个假设可能是错误消息警报:我正在测试我的应用程序的 iPhone 上的错误消息是: [ERROR] Error initializing Cordova: Missing Command Error
。
第二个假设我对window.open
方法的onclick
事件做错了,因为当我单击 iOS 测试设备上的打开按钮时,没有任何反应。
这是代码:
document.getElementById("openBrowser").addEventListener("click", function(){ var ref = window.open('http://www.espn.com', '_self', 'location=yes'); ref.addEventListener('loadstart', function(event) { alert('start: ' + event.url); }); ref.addEventListener('loadstop', function(event) { alert('stop: ' + event.url); }); ref.addEventListener('loaderror', function(event) { alert('error: ' + event.message); }); ref.addEventListener('exit', function(event) { alert(event.type); }); });
<button id="openBrowser">APRI</button>
正如您所看到的,上面的代码段也可以在谷歌涟漪模拟器上运行和运行,正如我之前在我的问题开头所说,它也可以在 Android 上运行(链接到 android 网络应用程序https://play.google.com /store/apps/details?id=com.phonegap.unoxtutti&hl=it ) 事实上,我不确定前一个或后一个假设出现故障的背后可能有什么问题。
除了cordova插件inappbrowser在config.xml中
<plugin name="org.apache.cordova.inappbrowser" />
我真的无法找到错误,但我希望为您提供必要的信息来帮助我解决这个看似无法解决的问题
测试环境是Google Ripple Emulator 、Phonegap Desktop App和Phonegap Mobile App 。 桌面应用程序创建项目的目录,而移动应用程序和谷歌涟漪模拟器连接到桌面应用程序,是我的测试环境。 最后但并非最不重要的是,在涟漪模拟器上,外部 url 成功打开,而在移动应用程序上却没有,并且在打开应用程序时会引发initialization error
。
在谷歌搜索网络上花费了很长时间后,我让 InAppBrowser 打开了一个外部 url。 这是解决我的错误的 SO 答案
这是链接中答案的代码
document.addEventListener('deviceready', onDeviceReady, false); function onDeviceReady() { // Mock device.platform property if not available if (!window.device) { window.device = { platform: 'Browser' }; } handleExternalURLs(); } function handleExternalURLs() { // Handle click events for all external URLs if (device.platform.toUpperCase() === 'ANDROID') { $(document).on('click', 'a[href^="http"]', function (e) { var url = $(this).attr('href'); navigator.app.loadUrl(url, { openExternal: true }); e.preventDefault(); }); } else if (device.platform.toUpperCase() === 'IOS') { $(document).on('click', 'a[href^="http"]', function (e) { var url = $(this).attr('href'); window.open(url, '_system'); e.preventDefault(); }); } else { // Leave standard behaviour } }
<a href="http://stackoverflow.com">
基本上我在上面的代码片段中所做的就是检查设备是 iOS 还是 Android,并根据使用的设备使用不同的方法。 这适用于 iOS Android 和浏览器。 我真的希望这个答案能帮助尽可能多的人。
需要设备插件和 InAppBrowser 插件,否则此代码失败
花时间在谷歌上搜索网络后,我修复了 InAppBrowser 打开一个外部 URL。 基本上,ios 平台的 InAppBrowser 插件存在错误。 当您单击该链接时,警报会出现在 iPhone 上。 我使用旧版本的 InAppbrowser 插件修复了该错误。 现在它工作得很好。
@Riccardo 通过 phonegap 文档添加您的代码片段 onDeviceReady 并尝试它。 应用程序浏览器
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.