Сохранить div от перезагрузки - PullRequest
2 голосов
/ 20 января 2010

По сути, я хочу тот же эффект, что и oldschool html 'frameset', я думаю.

Посмотрите на эту страницу, пожалуйста: http://onomadesign.com/wordpress/identity-design/alteon-a-boeing-company/

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

Итак, правильная навигация по миниатюрам должна оставаться такой же, я не хочу ее перезагружать.

Должен ли я делать это с помощью фреймов или фреймов? Или я могу сделать какой-то вызов jQuery, чтобы не «перезагружать» этот div? Может быть PHP? Извините, я не программист из происхождения.

Обновление:

Ребята, мне удалось поместить весь код навигации по миниатюрам в отдельный php-файл, который называется sidebar.php. Теперь это вызывается в моем single.php (Wordpress) <?php get_sidebar(); ?>.

Должно ли теперь быть проще, чтобы этот sidebar.php НЕ обновлялся при перезагрузке страницы? Я смотрю на куки, php сессии, iframes ... но я не могу заставить его работать.

Любая дополнительная помощь будет принята с благодарностью!

Ответы [ 4 ]

0 голосов
/ 12 июня 2010

Вместо обновления вашего контента с помощью обработчиков кликов, я предлагаю немного другой подход. Просто замените ваши гиперссылки ссылкой на этот вид:

 #info_page

Теперь установите простой интервал, который считывает текущий URL и обновляет DIV соответственно:

__LOC = document.location.href;
 setInterval(function(){
 if (__LOC!=document.location.href) __LOC=document.location.href;
  var fetchURL = __LOC.split("#")[1];
  $.get( "/getcontent/"+fetchURL, function(d){ $("#mydiv").html( d ); } )
 } 1000);

Это позволяет посетителям также использовать закладки.

0 голосов
/ 20 января 2010

Вы также можете определить, какой пункт меню был активирован (вы получили запрос на страницу из-за нажатия на соответствующую ссылку) и использовать эту информацию для восстановления / выбора этого пункта меню.

По крайней мере, это то, что яделать и ... Не требуются файлы cookie или AJAX!

0 голосов
/ 20 января 2010

Вы можете использовать технику, известную как "AHAH" Асинхронный HTML и HTTP. По сути, вы делаете JQuery

$.post("whatever.html",function(data) {
       $("contentdivelement").html(data);
} 

Вы можете заключить это в функцию как:

updateContent(sPage) {
   $.post(sPage,function(data) {
       $("contentdivelement").html(data);
} 
}

Это позволит загрузить содержимое страницы «frame» в div без перезагрузки страницы.

Вы также можете привязать к каждой из ссылок навигации и использовать их HREF в качестве пути для загрузки в ваш контент div, например:

$(".menuLink").click(function() {
   var menuLink = $(this).attr('href');

   updateContent(menuLink);

   /* prevents the browser from taking the parent to that link */
   return false;

});

Сложение: Ваше меню может выглядеть так:

<ul class="myMenu">
   <li><a href="frame1.html" class="menuLink">Frame 1</a></li>
   <li><a href="frame2.html" class="menuLink">Frame 2</a></li>
</ul>

Кроме того, Если вы хотите, чтобы он запоминал страницу, на которой вы находитесь, вы можете использовать куки или #anchors. Есть много способов добавить привязки «tab» или «menu», но одним из них будет просто использовать плагин jQuery.

Самый ОБЫЧНЫЙ и ТЕНДЕННЫЙ способ сделать это - использовать #anchors. Адресная строка вашего браузера задрается # frame1 до конца, поэтому при обновлении или перезагрузке страницы она автоматически загружает «frame1» с дополнительным кодом.

Вы даже можете вызвать якорь # / frame1.html и прочитать якорь в

$(document).ready(function() {
   /* you'll need to either use a plugin or parse out the anchor from your current browser address bar */
   updateContent(anchorContentVar);
});
0 голосов
/ 20 января 2010

Facebook делает это без фреймов для оптимизации. Они берут каждую ссылку и, если поддерживается, используют AJAX для загрузки содержимого страницы без перезагрузки макета.

Очевидно, что такого рода вещи могут потребовать существенной реструктуризации внутренних компонентов вашего приложения. Другой вариант - просто сохранить состояние меню в виде файла cookie при щелчке по ссылке (см. Плагин jQuery Cookie ) и при каждой перезагрузке использовать Javascript для просмотра файла cookie и динамического восстановления меню до правильного состояния или используйте свой внутренний PHP, чтобы прочитать файл cookie и решить, какое меню отображать.

Но если вы действительно впадаете в отчаяние, вы можете в конечном итоге вернуться к кадрам. Иногда это может быть хорошо, но сначала попробуйте все остальное:)

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