Запретить jQuery mobile от установки document.title? - PullRequest
15 голосов
/ 31 июля 2011

Похоже, что jQuery mobile устанавливает document.title в текстовое содержимое data-role="header", например:

<div data-position="fixed" data-role="header">
    <h1>This text</h1>
</div>

У меня есть обходной путь, чтобы предотвратить это как таковой:

$('div[data-role="page"]').bind('pageshow',function(){document.title = "My title"});

Есть ли лучший / более семантический способ сделать это?

Ответы [ 5 ]

21 голосов
/ 18 августа 2011

Другое решение - скопировать оригинальное название документа в атрибут data-title каждой страницы:

$(":jqmData(role='page')").attr("data-title", document.title);

Преимущество этого подхода по сравнению с изменением заголовка на страницах в том, что он предотвращает мерцание заголовка документа при переходах по страницам.

5 голосов
/ 30 мая 2013

Если вы укажете значение в div, заголовок не будет обновлен.Как это:

<div data-position="fixed" data-role="header">
    <div><h1>This text</h1></div>
</div>
2 голосов
/ 31 июля 2011

Я бы просто исправил jQuery mobile, чтобы убрать нежелательное поведение.Похоже, что в jquery.mobile.navigation.js.Вы можете пересобрать jQuery Mobile, чтобы снова получить минимизированную версию.

Если вы чувствуете себя амбициозно, вы можете даже отправить сообщение об ошибке в jQuery Mobile с просьбой, чтобы это было опцией (и, возможно, даже написать патч самостоятельно, если вывам это удобно).

1 голос
/ 08 июля 2014

Опция jqmData здесь не работает для меня. Опция обтекания H1 испортила внешний вид, который мне нужно было бы исправить с помощью CSS. Что сработало для меня и на самом деле задокументировано jQuery Mobile:

http://demos.jquerymobile.com/1.1.2/docs/pages/page-titles.html

Что сводится к добавлению атрибута data-title к div с помощью data-role = "page":

<div data-role="page" data-theme="a" data-title="MyPage - @ViewBag.Title">

В этом конкретном примере я устанавливаю заголовок страницы на «MyPage -», за которым следует заголовок страницы, установленный через MVC в ViewBag.

0 голосов
/ 21 января 2016

$ (": jqmData (role = 'page')"). Attr ("data-title", document.title);

Это работает в соответствии с предложением @stanislaw-osinski - однако мне пришлось использовать его, чтобы заставить его работать в jQuery Mobile v1.4.5:

<script>
$(document).bind("pageinit", function(){
     // Patch to prevent overwriting <title></title>
    $(":jqmData(role='page')").attr("data-title", document.title);
});
</script>
...