Почему кнопки "Назад" и "Домой" не отображаются по умолчанию на моих страницах jQuery Mobile? - PullRequest
1 голос
/ 03 марта 2012

Кнопки «Назад» и «Домой» не отображаются в заголовках моего приложения jQuery Mobile, хотя я их не подавлял. Зачем? Вот как выглядит страница в моем приложении.

<!DOCTYPE html> 
<html> 
<head>
    <title>My jQuery Mobile App</title> 
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="stylesheet" href="//code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" />
    <script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
    <script src="//code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js"></script>
</head> 
<body> 
    <div data-role="page">
        <div data-role="header">
            <h1>Look Up a Stock</h1>
        </div><!-- /header -->    
        <div data-role="content">
            Code to look up a stock.
        </div><!-- /content -->
        <div data-role="footer">
            <h4>&copy; 2012</h4>
        </div><!-- /footer -->
    </div><!-- /page -->
</body>
</html>

1 Ответ

3 голосов
/ 03 марта 2012

Добавление кнопок "Назад"

В jQuery Mobile есть функция автоматического создания и добавления кнопок "назад" к любому заголовку, хотя по умолчанию она отключена.Это в первую очередь полезно в установленных приложениях без Chrome, таких как те, которые работают в веб-представлении собственного приложения.Фреймворк автоматически генерирует кнопку «назад» в заголовке, когда опция addBackBtn в плагине страницы имеет значение true.Это также можно установить с помощью разметки, если у div страницы есть атрибут data-add-back-btn = "true".

Если вы используете атрибут data-rel = "back" на привязке, любые щелчкина этом якоре будет имитировать кнопку «Назад», возвращаясь к одной записи в истории и игнорируя href по умолчанию для якоря.Это особенно полезно при переходе по ссылке на именованную страницу, например при ссылке «home», или при создании кнопок «назад» с JavaScript, например, при закрытии диалога.При использовании этой функции в исходной разметке обязательно предоставьте содержательную ссылку, которая фактически указывает на URL ссылающейся страницы (это позволит этой функции работать пользователям в браузерах C-Grade . Такжепожалуйста, имейте в виду, что если вы просто хотите обратный переход без фактического возврата в историю, вы должны использовать вместо этого атрибут data-direction = "reverse".

Источник: http://jquerymobile.com/demos/1.1.0-rc.1/docs/toolbars/docs-headers.html

Раньше он был включен по умолчанию, но для большего количества людей было больше смысла отключать его по умолчанию.

Ваш HTML-код может измениться на:

<div data-add-back-btn="true" data-role="page">
    ...
</div><!-- /page -->

Вот демо: http://jsfiddle.net/nHgu7/1/

Вы также можете привязать к событию mobileinit, чтобы установить значение по умолчанию для addBackBtn:

<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script>
$(document).bind("mobileinit", function() {
      $.mobile.page.prototype.options.addBackBtn = true;
});
</script>
<script src="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js"></script>

Вот демо: http://jsfiddle.net/nHgu7/2/

Источник: http://forum.jquery.com/topic/can-t-get-mobile-addbackbtn-to-work

Обновление

Вы можете автоматически добавить кнопку домой на каждую страницу, например:

//attach an event handler to any `data-role="page"` element at any time for the `pageinit` event
//(the event that fires when the page is about to be initialized)
​$(document).delegate('[data-role="page"]', 'pageinit', function () {

    //check for a `data-role="header"` element to add a home button to
    var $header = $(this).children('[data-role="header"]');
    if ($header.length) {

        //create a link with a `href` attribute and a `class` attribute,
        //then turn it into a jQuery Mobile button widget
        $header.append($('<a />', { class : 'ui-btn-right', href : '#zero' }).buttonMarkup({ icon: "home", iconpos : "notext" }));
    }        
});​​​

Вот демо: http://jsfiddle.net/nHgu7/3/

И если вы просто добавите оператор if, который проверяетИдентификатор домашней страницы: вы можете добавить домашнюю кнопку ко всем, кроме домашней страницы:

$(document).delegate('[data-role="page"]', 'pageinit', function () {

    //check to see if this is the homepage, if so do nothing
    if (this.id != 'home') {
        var $header = $(this).children('[data-role="header"]');
        if ($header.length) {
            $header.append($('<a />', { class : 'ui-btn-right', href : '#zero' }).buttonMarkup({ icon: "home", iconpos : "notext" }));
        }    
    }    
});​

Вот демоверсия: http://jsfiddle.net/nHgu7/4/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...