2012-01-26 3 views
1

Я пишу веб-приложение C# .Net MVC для мобильных устройств с настраиваемой темой, созданной с использованием jQuery Mobile Themeroller. Темы работают нормально, пока я не нажму F5, нажмите кнопку обновления браузеров или не выполните любое другое обновление. После обновления страница теряет пользовательскую тему и возвращает jQuery Mobile css по умолчанию. Я могу только обновить веб-приложение на домашней странице, не теряя тему.Почему мое веб-приложение JQuery Mobile теряет свою собственную тему при обновлении страницы.

У меня read this short post, но я не уверен, что это то же самое. Я вижу, как это будет исправлять стиль после завершения ajax-вызова, но как насчет проблемы с обновлением? Я имею в виду, что если я просто нажму 'refresh' или F5 на странице с поддержкой JQM, он потеряет все мои собственные темы (из themeroller).

Возможно ли это из-за способа, которым JQM добавляет элемент base к первой странице? Я не уверен, как это подтвердить. Мне не нужно было бы звонить $('#mypage').trigger('create'); на все готовые документы, должен ли я?

Я ценю любые ответы. Я бы хотел опубликовать jsfiddle, но это было сложно при использовании специальной темы.

UPDATE

<meta name="viewport" content="width=device-width, initial-scale=1" /> 
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css" /> 
<link rel="stylesheet" href="Content/stylesheets/mobilere.min.css" /> 
<link rel="stylesheet" href="Content/stylesheets/main.css" /> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"></script> 
<script type="text/javascript" src="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js"></script> 

Это все в моем head блоке - mobilere.min.css мой themerolled таблицы стилей.

В настоящее время у меня нет настройки событий для дома, потому что я не хотел запускать обновление на каждой странице.

+0

Можете ли вы разместить код, в котором вы указываете стили CSS и код, на который вы ссылаетесь, который вы используете на 'document.ready'? – Jasper

+0

@ Jasper, в настоящее время я не реализовал 'document.ready', см. Обновление для кода стилей и спасибо! – shanabus

ответ

0
  1. Вы должны иметь код, который вы размещены с <head> раздел страницы в <head> части каждой страницы сайта, так что если пользователь обновляет браузер на любой странице будет доступна. Это не будет создавать больших накладных расходов при навигации по сайту, поскольку jQuery Mobile только набирает первый элемент data-role="page" на странице и добавляет его в текущую DOM.

  2. Вы должны использовать абсолютные пути к листам стилей, чтобы они могли быть найдены независимо от того, какой базовый URL-адрес страницы.

На сайте-ноте $('#mypage').trigger('create'); используются для добавления соответствующих классов и структур HTML на странице виджет, не изменять стиль простыни.

+0

Спасибо за ваш ответ. Я использую главную страницу для всех моих страниц, то есть там, где хранятся эти объявления style/js. Таким образом, они находятся на каждой странице. Абсолютные пути не работали, потому что я случайно использовал главную страницу, а не главную страницу MVC, поэтому мои вызовы Url.Content («~ /») не работали. Исправлено сейчас с вашей помощью, и этот пост - http://stackoverflow.com/questions/1285726/can-you-use-url-content-in-a-master-page – shanabus