Отображение пользовательского сообщения, если URL-адрес не загружается в phonegap inappbrowser

Я создал приложение для Android, которое в основном загружает отзывчивый веб-сайт через phonegap inappbrowser.

Теперь я хочу придумать его и сделать его больше похожим на приложение. Итак, мои основные проблемы

  1. Когда я пытаюсь загрузить приложение и почему-то отключается интернет, он отображает URL-адрес веб-сайта и говорит, что веб-сайт недоступен. Поэтому я хочу удалить это и отобразить свое собственное сообщение. Это возможно? Что мне нужно сделать для этого?

  2. Всякий раз, когда пользователь нажимает на любой пункт меню веб-сайта из приложения, он дает пустой экран во время перехода/загрузки страницы. Теперь я могу показывать знак загрузки каждый раз, когда они нажимают на пункт меню?

Это то, что я использую

<script type="text/javascript" charset="utf-8">

    // Wait for Cordova to load
    //
    document.addEventListener("deviceready", onDeviceReady, false);

    // Cordova is ready
    //
    function onDeviceReady() {
         var ref = window.open('http://www.google.com', '_blank', 'location=yes');
         ref.addEventListener('loadstart', function() { alert('start: ' + event.url); });
         ref.addEventListener('loadstop', function() { alert('stop: ' + event.url); });
         ref.addEventListener('loaderror', function(event) { alert('error: Please Check your Internet Connection. '); });
         ref.addEventListener('exit', function() { alert(event.type); });
    }

    </script>

Я использую dreamweaver для работы с html-разделом и сборкой phonegap для компиляции моего приложения.

Я довольно новичок в этом, поэтому, пожалуйста, уточните.


function onDeviceReady()
        {
            checkConnection();
                } 
    function checkConnection() {
            var networkState = navigator.connection.type;

            var states = {};
            states[Connection.UNKNOWN]  = 'Unknown connection';
            states[Connection.ETHERNET] = 'Ethernet connection';
            states[Connection.WIFI]     = 'WiFi connection';
            states[Connection.CELL_2G]  = 'Cell 2G connection';
            states[Connection.CELL_3G]  = 'Cell 3G connection';
            states[Connection.CELL_4G]  = 'Cell 4G connection';
            states[Connection.NONE]     = 'No network connection';
        if(states[networkState]==states[Connection.NONE])
            {alert('No Internet Connection! Please Turn on Wifi or Mobile Data to use this application');}
else
{
var ref = window.open('http://www.google.com', '_blank', 'location=yes');
         ref.addEventListener('loadstart', function() { alert('start: ' + event.url); });
         ref.addEventListener('loadstop', function() { alert('stop: ' + event.url); });
         ref.addEventListener('loaderror', function(event) { alert('error: Please Check your Internet Connection. '); });
         ref.addEventListener('exit', function() { alert(event.type); });
}
        }

Что делать, если во время использования приложения отключается интернет? Тогда тоже получится? Если нет, то есть ли способ сделать это тоже?

Также не могли бы вы сказать мне, где применить следующие коды, которые вы указали в своем ответе?

navigator.notification.activityStart("Please Wait", "Its loading your homepage....."); 
Below code will stop the loading popup :

navigator.notification.activityStop();

Большое тебе спасибо. Мне действительно нужны эти 2 решения :(


person user3364578    schedule 07.06.2014    source источник


Ответы (2)


Привет Наконец-то у меня работает

Функция onerror вызывается, когда в браузере нет интернета.

Функция onload вызывается при наличии интернет-соединения.

<body>
<script>document.write('<img src="http://static.forosdelweb.com/fdwtheme/logo-navidad.png?'+Math.random()+'" style="display:none" onload="alert(&quot;hay internet&quot;)" onerror="alert(&quot;no hay internet&quot;)" />');</script>
</body>

person ogarzonm    schedule 09.04.2015

Вы можете проверить подключение к Интернету с помощью функции DeviceReady со следующим кодом.

    function onDeviceReady()
        {
            checkConnection();
                } 
    function checkConnection() {
            var networkState = navigator.connection.type;

            var states = {};
            states[Connection.UNKNOWN]  = 'Unknown connection';
            states[Connection.ETHERNET] = 'Ethernet connection';
            states[Connection.WIFI]     = 'WiFi connection';
            states[Connection.CELL_2G]  = 'Cell 2G connection';
            states[Connection.CELL_3G]  = 'Cell 3G connection';
            states[Connection.CELL_4G]  = 'Cell 4G connection';
            states[Connection.NONE]     = 'No network connection';
        if(states[networkState]==states[Connection.NONE])
            {alert('No Internet Connection! Please Turn on Wifi or Mobile Data to use this application');}
else
{
//load your pages
}
        }

Теперь, если вы загружаете адаптивный сайт, вам нужно указать загрузчик на этом адаптивном веб-сайте. Но в кордове вы можете использовать следующий код для загрузчика

navigator.notification.activityStart("Please Wait", "Its loading your homepage....."); 

Ниже код остановит всплывающее окно загрузки:

navigator.notification.activityStop();
person Deep Mehta    schedule 07.06.2014