2011-04-12 3 views
4

Я разрабатываю сложную страницу, содержащую некоторые виджеты, некоторые «перетаскиваемые» элементы и интерактивную временную шкалу <canvas>.Сложные подсказки HTML (хранилище) - предложение архитектуры


Проблема:

На mouseover - на элементах, которые могут быть втянуты (юридические лица) - я должен отобразить всплывающую подсказку, содержащую некоторые дополнительные данные (а «предварительный просмотр» из-страницы объекта) о этот конкретный элемент.

перетаскиваемую элементы (я думаю, что они ~ 100) представлены таким образом (некоторые из них созданы динамически):

<!-- ... --> 
<div id="entity-1" class="draggable"> 
    <div class="title">title</div> 
    <img src="#URL" alt="..." /> 
    <div class="tooltip-wrapper"></div> 
</div> 
<div id="entity-2" class="draggable"> 
    <div class="title">title</div> 
    <img src="#URL" alt="..." /> 
    <div class="tooltip-wrapper"></div> 
</div> 
<div id="entity-3" class="draggable"> 
    <div class="title">title</div> 
    <img src="#URL" alt="..." /> 
    <div class="tooltip-wrapper"></div> 
</div> 
<!-- ... --> 

где .tooltip-wrapper первоначально установлен на display:none и opacity:0

общая подсказка - это своего рода сложный HTML-код, содержащий некоторые детали, т. е. (упрощенная партия)

<div class="tooltip-entity-wrapper"> 
    <div class="title">entity title</div> 

    <div class="tab"><!-- tab content --></div> 
    <div class="tab"><!-- tab content --></div> 
    <div class="tab"><!-- tab content --></div> 

    <form action="..."> 
     <!-- form content --> 
    </form> 
    <a href="#URL"><!-- full entity page link --></a> 
</div> 

I t t hinking около 3 возможных решений:

  • На mouseover (на первом) сделать AJAX запрос, который возвращает определенную подсказку HTML, инъекционный его в всплывающей-обертке, показать его и на mouseout скрыть.
  • На mouseover, (на первом), сделайте запрос ajax, который возвращает json, визуализирует его js (усы), вводит его внутри всплывающей подсказки, показывает его и на mouseout скрыть его.
  • Рендер подсказке непосредственно внутри элемента, и переключить его на mouseover/mouseout

CSS-код/​​макет/позиционирование не является большой проблемой, и потому, что я уже создал подсказку MooTools плагин макет (если У вас есть предложения о некоторых великолепных настраиваемых плагинах подсказок mootools, пожалуйста, дайте мне знать :)).

Мне просто нужен совет/предложение о том, каким образом следовать этой расширенной системе подсказок или если у вас есть лучшие решения, предлагающие мне. :)

Спасибо всем


P.S. Я разрабатываю веб-приложение с помощью rails3 (и haml, scss, compass) и mootools как js framework (+ усы как система шаблонов).

ответ

4

Вы действительно не можете принять один метод и выбрать его поверх другого без покрытия некоторых ваших бизнес-требований.

вопросы, которые вы должны спросить себя, являются:


является SEO важно

если да:

  • важно не иметь содержание в организме, как это не релевантные или уникальные, могут повлиять на плотность ключевых слов и дать неправильное представление о реальном содержании страницы для Google, затем AJAX
  • важно иметь в организме Google, чтобы увидеть, а затем вынести в скрытом элементе

У меня есть ощущение вашего приложения не будет требовать много что, но это действительная точка.


DOM и "является выполнение важной"

если да (вы уже используете холст ... 100+ draggables ...)

  • сколько (слишком много?), у вас будет то, что есть подсказки (дополнительные dom-узлы)? Очень много? идти с делегацией Ajax/события
  • несколько подсказок на странице: все еще может предварительно сделать его сохранить дополнительный запрос (ы)
  • след добавляя все кончике события, делегат!
  • Задержка во время ожидания XHR onComplete нежелательно? предварительно вынести!

Сеть/запрашивает

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

  • Результаты запроса кэширования локально на странице и проверка на кэш первого, прежде чем обращаться с сервера
  • , если ваши данные не динамический/в режиме реального времени, рассмотреть даже толкая к LocalStorage под каким-то ключом/дб ид , это выдержит перезагрузку страницы, переход и возвращение посетителей.

, как и для инструкции, я знаю, что вы вполне способны делать фактический код так удачи :)

из моего опыта, я смесь обоих. которая часто меняется, но не часто кэшируется на каждую загрузку страницы. информация об использовании/размерах, формы и т. д., которые не меняют кеш i в localStorage. всплывающие подсказки, которые имеют очевидное значение SEO, находятся в теле.

Смежные вопросы