ioscordovacordova-3hybrid-mobile-appappframework

Cordova/appFramework app shows up blank on iOS


I've a very simple hybrid mobile application developed with Cordova and appFramework.

index.html looks like this

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="format-detection" content="telephone=no" />
    <!-- WARNING: for iOS 7, remove the width=device-width and
    height=device-height attributes. See https://issues.apache.org
    /jira/browse/CB-4323 -->
    <meta name="viewport" content="user-scalable=no, initial-scale=1,
    maximum-scale=1, minimum-scale=1, width=device-width, 
    height=device-height, target-densitydpi=device-dpi" />
    <link rel="stylesheet" type="text/css" href="css/index.css" />

    <link rel="stylesheet" type="text/css" href="css/af/main.css"  />
    <link rel="stylesheet" type="text/css" href="css/af/appframework.css" />
    <link rel="stylesheet" type="text/css" href="css/af/lists.css"  />
    <link rel="stylesheet" type="text/css" href="css/af/forms.css"  />
    <link rel="stylesheet" type="text/css" href="css/af/buttons.css"  />
    <link rel="stylesheet" type="text/css" href="css/af/badges.css"  />      
    <link rel="stylesheet" type="text/css" href="css/af/grid.css"  />

    <link rel="stylesheet" type="text/css" href="css/af/android.css"  />
    <link rel="stylesheet" type="text/css" href="css/af/win8.css"  />
    <link rel="stylesheet" type="text/css" href="css/af/bb.css"  />
    <link rel="stylesheet" type="text/css" href="css/af/ios.css"  />
    <link rel="stylesheet" type="text/css" href="css/af/ios7.css"  />
    <link rel="stylesheet" type="text/css" href="css/af/tizen.css"  />

    <title>Cordova Application</title>
    <script type="text/javascript" charset="utf-8"
    src="js/vendor/appframework.js"></script>
    <script type="text/javascript" charset="utf-8" 
    src="js/vendor/plugins/af.scroller.js"></script>
    <script type="text/javascript" charset="utf-8" 
    src="js/vendor/plugins/af.css3animate.js"></script>

    <script type="text/javascript" charset="utf-8" 
    src="js/vendor/ui/appframework.ui.js"></script>
    <script type="text/javascript" charset="utf-8" 
    src="js/vendor/ui/transitions/fade.js"></script>
    <script type="text/javascript" charset="utf-8" 
    src="js/vendor/ui/transitions/flip.js"></script>
    <script type="text/javascript" charset="utf-8" 
    src="js/vendor/ui/transitions/pop.js"></script>
    <script type="text/javascript" charset="utf-8" 
    src="js/vendor/ui/transitions/slide.js"></script>
    <script type="text/javascript" charset="utf-8" 
    src="js/vendor/ui/transitions/slideDown.js"></script>
    <script type="text/javascript" charset="utf-8" 
    src="js/vendor/ui/transitions/slideUp.js"></script>
    <script type="text/javascript" charset="utf-8" 
    src="js/vendor/plugins/af.slidemenu.js"></script>

    <script>
        $.ui.ready(function () {
            console.log("UI Ready!!!");
        });
        $(document).ready(function() {
            console.log('Document Ready...');
            alert('Document Ready...');
        });
    </script>
</head>
<body>
    <div id="afui">
        <div id="header">
        </div>
        <div id="content">
            <div data-title="Home" class="panel"
                                 id="main" selected="true">
                <span>THIS is the HOME Page!</span>
            </div>
            <div data-title="Second Page" class="panel" id="second">
            </div>
        </div>
        <nav>
            <div class="title">Nav Home</div>
            <ul>
                <li><a class="icon home mini"
                                    href="#main">Home Link</a></li>
                <li><a class="icon mini"
                                    href="#second">Second Link</a></li>
            </ul>
        </nav>
    </div>
    <script type="text/javascript" src="cordova.js"></script>
</body>
</html>

This shows up correctly and even the navigation is wired up when opened in Safari or Chrome desktop browsers.

But if I run it in either iOS or Android emulators, I see the alert 'Document Ready' and after that blank page. Home panel is not displayed.

Here is what I do to run the emulators.

 cordova emulate ios
 cordova emulate android

Even if I open the index.html files directly from the platform builds they show up correctly on the desktop browser.

I'm pretty new to all this so I may be missing steps here. Any help would be appreciated.


Solution

  • You dont need all the fragmented appframework js and css files, you can just include 2 css and 1 js file, here is updated code, it works as cordova app on android, I built Cordova app with Intel XDK.

    <!DOCTYPE html>
    <html>
    <head>
        <title>XDK</title>
        <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0;" />
    
        <link rel="stylesheet" type="text/css" href="css/af.ui.css" />
        <link rel="stylesheet" type="text/css" href="css/icons.css" />
        <script type="text/javascript" charset="utf-8" src="js/appframework.ui.min.js"></script>
    
        <script>
            $.ui.ready(function () {
                console.log("UI Ready!!!");
            });
            $(document).ready(function() {
                console.log('Document Ready...');
                alert('Document Ready...');
            });
        </script>
    </head>
    <body>
        <div id="afui">
            <div id="header">
            </div>
            <div id="content">
                <div title="Home" class="panel" id="main" selected="true">
                    <span>THIS is the HOME Page!</span>
                </div>
                <div title="Second Page" class="panel" id="second">
                </div>
            </div>
            <nav>
                <div class="title">Nav Home</div>
                <ul class="list">
                    <li><a class="icon home mini" href="#main">Home Link</a></li>
                    <li><a class="icon mini" href="#second">Second Link</a></li>
                </ul>
            </nav>
        </div>
        <script type="text/javascript" src="cordova.js"></script>
    </body>
    </html>