Прокрутка пользовательского div не работает в jQuery Mobile на Android - PullRequest
1 голос
/ 24 марта 2011

В моем приложении есть поисковая система, которая возвращает список результатов.Страница отдельных результатов заполняется данными каждый раз, когда пользователь нажимает ведущую туда ссылку.На этой странице также есть кнопки для переключения контента, видимого в данный момент.Проблема в том, что эта часть приложения потеряла возможность прокрутки.Я проверил вызов событий 'scrollstart', но ни один из них не был вызван.Я использую последнюю версию PhoneGap и JQuery Mobile.Тестирование на Android 2.1 в эмуляторе и на ZTE Blade.

Код:

<!DOCTYPE html> 
<html> 
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />       
        <title>Search</title> 
        <link rel="stylesheet" href="jquery.mobile-1.0a3.min.css"/>
        <script type="text/javascript" charset="utf-8" src="phonegap.0.9.4.js"></script>
        <script type="text/javascript" src="jquery-1.4.3.min.js"></script>
        <script type="text/javascript" src="jquery.mobile.min.js"></script>
        <style type="text/css">            
            p {
                font-size: 11px;
            }

            .centered {
                text-align:center;
            }

            .search-detail {        
            }

            .header {
                height:42px;
            }

            .ui-li-thumb {
                height: 92px;
                max-height: 92px;
                max-width: 90px;
            }

            #single-top h4 {
                margin-top:5px;
                margin-bottom:5px;
            }

            .guziki .ui-btn {
                margin-left:0;
            }

            #single-data {
                margin-top:10px;
            }
                #single-data h4 {
                    margin-top:5px;
                    margin-bottom:5px;
                }
                #single-data h6 {
                    margin: 0;
                }        
        </style>       
    </head> 
<body> 

<!-- Start of first page -->
<div data-role="page" id="menu">
    <div data-role="header" data-position="fixed" class="header" id="my-header">        
    </div>
    <div data-role="content">   
        <ul data-role="listview" role=listbox"" data-theme="c">
            <li><a href="#page-5" class="single" data-transition="pop" name="0">Go !</a></li>
        </ul>
    </div>
    <div data-role="footer">
        footer
    </div>
</div>

<!-- Start of fifth page -->
<div data-role="page" id="page-5" data-theme="a">
    <div data-role="header" data-position="fixed" class="header" data-id="myheader">
        <h1></h1>
    </div>
    <div data-role="content" class="single-content">
    </div>
    <div data-role="footer">
        footer
    </div>
</div>

<script type="text/javascript">
    var searchObjects = [],
    id;

    var fixgeometry = function(){
        scroll(0, 0);

        var header = $("div[data-role='header']:visible");
        var footer = $("div[data-role='footer']:visible");
        var content = $("div[data-role='content']:visible:visible");
        var viewport_height = $(window).height();
        var content_height = viewport_height - header.outerHeight() - footer.outerHeight();

        if((content.outerHeight() - header.outerHeight() - footer.outerHeight()) <= viewport_height) {
            content_height -= (content.outerHeight() - content.height());
            content.height(content_height);
        }
    }    

    obj = {'image': 'http://www.prologis.com/images/uploads/japanese-flag-640.jpg', 'name': 'ProLogis Park', 'developer': 'ProLogis',
    'location': 'Suburbs', 'exact_location': 'New York',
    'total_area': 71115, 'free_area': 3465, 'id': 2033, 'about': 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam non dui mollis libero dictum eleifend.'+
    'Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas' +
    'Cras quam sem, pulvinar et luctus eu, tempor non metus. Cras mollis lacinia massa sed sagittis.'};

    searchObjects.push(obj);


        $("#page-5").live('pagebeforehide', function(){
            var content = $(".single-content");
            $('.container').remove();
        });

        $("#page-5").live('pageshow', function(){
            fixgeometry();
        });

        $('.single').live('click', function(){
            id = $(this).attr('name'),
            content = $(".single-content");
            var object = searchObjects[id];

            var html = '<div class="container">'+
                            '<div id="single-top">'+
                                '<h4></h4>'+
                                '<div data-inline="true" class="guziki" data-theme="c">'+
                                    '<a data-role="button" href="#" class="ui-btn ui-btn-inline ui-btn-corner-all ui-btn-up-a ui-shadow" data-theme="a" data-inline="true" name="main_data"><span class="ui-btn-inner ui-btn-corner-all"><span class="ui-btn-text">About</span></span></a>'+
                                    '<a data-role="button" href="#" class="ui-btn ui-btn-inline ui-btn-corner-all ui-btn-up-a ui-shadow" data-theme="a" data-inline="true" name="localization_data"><span class="ui-btn-inner ui-btn-corner-all"><span class="ui-btn-text">Localization</span></span></a>'+
                                    '<a data-role="button" href="#" class="ui-btn ui-btn-inline ui-btn-corner-all ui-btn-up-a ui-shadow" data-theme="a" data-inline="true" name="gallery_data"><span class="ui-btn-inner ui-btn-corner-all"><span class="ui-btn-text">Gallery</span></span></a>'+        
                                '</div>'+
                            '</div>'+
                            '<div id="single-data"></div>'+
                        '</div>';                      
            content.append(html);

            $('a[name|="main_data"]').live('click', load_main_data);
            $("a[name|='localization_data']").live('click', load_localization_data);
            $("a[name|='gallery_data']").live('click', load_gallery_data);        

            $('#single-top h4').html(object.name);
            load_main_data();
            fixgeometry();
        });

        var load_main_data = function(){
            $('#single-data').empty();
            var object = searchObjects[id];

            $('#single-data').append('<img src="'+ object.image +'" alt="'+ object.name +'" />');
            $('#single-data').append('<h4>Developer:</h4>');
            $('#single-data').append('<h6>'+ object.developer +'</h6>');            
            $('#single-data').append('<h4>About:</h4>');
            $('#single-data').append('<p>'+ object.about +'< br/><br /></p>');
            $('#single-data').append('<img src="'+ object.image +'" alt="'+ object.name +'" />');
            $('#single-data').append('<img src="'+ object.image +'" alt="'+ object.name +'" />');                                 
        }

        var load_localization_data = function(id){
            $('#single-data').empty();
            var object = searchObjects[id];

            $('#single-data').append('<h4>Localization:</h4>');
        }

        var load_gallery_data = function(id){
            $('#single-data').empty();
            var object = searchObjects[id];

            $('#single-data').append('<h4>Gallery:</h4>');
        }
</script>
</body>
</html>

Кстати, кто-нибудь знает, почему это приложение так медленно?Я что-то не так делаю во время компиляции (я использую учебник с сайта phonegap, не все использованные функции были удалены из манифеста)?

1 Ответ

1 голос
/ 25 марта 2011

Я вижу, что вы вручную добавляете классы для кнопок, поэтому, вероятно, jqm неправильно обрабатывает вашу страницу. Возможно, попробуйте заблокировать автоматическое перенаправление на страницу, установив для href вашей ссылки значение '#' (которое возвращает false) и показать страницу вручную, вызвав $.mobile.changePage('yourpage');. Я почти уверен, что тогда вы сможете удалить этот параметр переполнения.

...