PhoneGap InAppBrowser 如何禁用网络不可用时的错误页面

问题描述 投票:0回答:2

我正在实现一个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); });
}
cordova inappbrowser
2个回答
0
投票

您需要使用网络插件并测试是否有连接。

API文档

您可能还需要处理离线事件,以便您知道何时失去连接。

document.addEventListener("offline", onOffline, false);

function onOffline() {
    // Handle the offline event
}

解决方案2 您可以在 inappbrowser 上使用 loadError 事件,并在加载失败时执行某些操作


0
投票

只需将此代码添加到应用程序 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

© www.soinside.com 2019 - 2024. All rights reserved.