Предотвращение jQuery mobile от установки document.title?
Похоже, что 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"});
Есть ли лучший/более семантический способ сделать это?
Ответы
Ответ 1
Другим решением было бы скопировать исходный заголовок документа в атрибут заголовка данных каждой страницы:
$(":jqmData(role='page')").attr("data-title", document.title);
Преимущество такого подхода в изменении заголовка на страницах заключается в том, что он предотвратит фликкер документа во время переходов страницы.
Ответ 2
Если вы обмениваете свое значение на div, он не будет обновлять заголовок. Вот так:
<div data-position="fixed" data-role="header">
<div><h1>This text</h1></div>
</div>
Ответ 3
Я бы просто установил jQuery mobile, чтобы удалить нежелательное поведение. Кажется, он находится в jquery.mobile.navigation.js
. Вы можете перестроить jQuery Mobile, чтобы снова получить уменьшенную версию.
Если бы вы чувствовали себя амбициозными, вы даже могли бы отправить ошибку jQuery Mobile, требуя, чтобы это был вариант (и, возможно, даже написать патч самостоятельно, если вам удобно это делать).
Ответ 4
Параметр 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.
Ответ 5
$( ": 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>