如果url无法加载到phonegap inappbrowser中,则显示自定义消息

时间:2014-06-07 07:41:23

标签: url cordova load external inappbrowser

我创建了一个Android应用程序,基本上通过phonegap inappbrowser加载响应式网站。

现在我想把它搞定,让它更像是一个应用程序。所以我的主要问题是

  1. 当我尝试加载应用程序并以某种方式上网时,它显示网站的网址并说网站不可用。所以我想删除它并显示我自己的自定义消息。那可能吗?我需要做些什么呢?

  2. 每当用户从应用程序点击网站的任何菜单项时,它会在页面转换/加载期间显示空白屏幕。无论如何,我每次点击菜单项时都会显示加载标志吗?

  3. 这就是我正在使用的

    <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 个答案:

答案 0 :(得分:1)

嗨,最后为我工作

当浏览器没有互联网时,会调用

onerror函数。

当存在互联网连接时,会调用

onload函数。

&#13;
&#13;
<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>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以使用以下代码检查onDevice onDeviceReady函数。

    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
}
        }

现在,如果您要加载响应式网站,则需要在该响应式网站中指定加载程序。但在cordova中,您可以使用以下代码加载

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

下面的代码将停止加载弹出窗口:

navigator.notification.activityStop();