我正在实现一个phonegap应用程序,它将以inappBrowser功能的形式获取应用程序新闻。问题是,当用户网络断开连接时,将打开的网址是“无法连接到互联网并且无法到达http://xxxxx.com的服务器”的网址,这使用户看到他正在使用浏览器而不是应用程序。所以我想自定义这个浏览器页面,在网络不可用时加载
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
var ref = window.open('http://apache.org', '_blank', '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); });
}
您需要使用网络插件并测试是否有连接。
您可能还需要处理离线事件,以便您知道何时失去连接。
document.addEventListener("offline", onOffline, false);
function onOffline() {
// Handle the offline event
}
解决方案2 您可以在 inappbrowser 上使用 loadError 事件,并在加载失败时执行某些操作
只需将此代码添加到应用程序 www 文件夹中的 index.html 页面,或者您可以将其添加到 js 文件夹中的 js/index.js 文件中。您确实不再需要 apache cordova 插件来实现此功能,因为此代码可以响应大多数现代浏览器,包括 apache inappbrowser
<script type="text/javascript">
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
window.addEventListener("offline", (e) => {
window.location.replace("no-internet-page.html");
});
window.addEventListener("online", (e) => {
window.open = cordova.InAppBrowser.open('https://mywebsite.com', '_blank', 'location=no,toolbar=no,zoom=no');
});
}
</script>
您可以点击此链接进行进一步确认https://developer.mozilla.org/en-US/docs/Web/API/Navigator/onLine