我在phonegap中开发混合应用程序,基本上我在索引页面中有一个按钮,无论何时单击都会打开一个外部URL。我在Android上取得成功并在iOS上失败。
我已查找了这些问题iOS / Cordova: InAppBrowser not working - cordova/phonegap onclick doesn't work - PhoneGap Build: how to open external url in device browser on Android? - phonegap open link in browser但不幸的是,这些问题都没有帮助我解决问题
第一个假设可能是错误消息警告:错误消息
在我测试我的应用程序的iPhone上:[ERROR] Error initializing
Cordova: Missing Command Error
。
第二个假设我对onclick
window.open
事件做错了
方法因为当我点击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>
&#13;
正如你所看到的,上面的代码片段也适用于google ripple模拟器,正如我之前在我的问题开头所说的那样,它也适用于Android(链接到android web app 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。桌面应用程序创建项目目录,而移动应用程序和谷歌涟漪模拟器连接到桌面应用程序,是我的测试环境。最后但并非最不重要的是,在涟漪仿真器上,外部网址成功打开,而移动应用程序上没有,而initialization error
会在应用程序打开时抛出。
答案 0 :(得分:1)
在谷歌搜索网络上花了很长时间后,我让InAppBrowser打开了一个外部网址。 this is the SO answer who solved my bug
这是链接
中答案的代码
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插件是必需的,否则此代码将失败
答案 1 :(得分:0)
花时间在网上搜索,我修复了InAppBrowser打开外部网址。基本上,ios平台的InAppBrowser插件中存在错误。当您单击该链接时,警报将显示在iPhone上。 我使用旧版本的InAppbrowser插件修复了这个bug。现在它运作得很好。
答案 2 :(得分:-1)
@Riccardo通过phonegap文档为此添加您的代码片段,onDeviceReady并尝试使用。InAppBrowser