AJAX html stubs - практично ли загружать очищенные элементы головки? - PullRequest
0 голосов
/ 26 октября 2011

Я пытаюсь реализовать простейшее решение для загрузки страниц в фоновом режиме. Я просто хочу заменить некоторые элементы в моем html на элементы из заглушки ajax. Я, конечно, столкнулся со стандартными проблемами:

  1. Зависимости JavaScript
  2. Зависимости стиля
  3. Настройка заголовка

Моя заглушка AJAX довольно проста - на самом деле это вся страница, помещенная в теги без имени head или body (jQuery / browser не любит парсинг этих узлов). Например:

<html-stub>
    <head-stub>
        <title>Page Title</title>
        <script type="text/javascript" src="somescript"></script>
        <link rel="stylesheet" type="text/css" href="somestylesheet">
    </head-stub>
    <article>Some Content to replace in the origin document</article>
</html-stub>

Безопасно / практично / совершенно глупо делать что-то вроде:

var stub = $(ajaxHTML);
var head = $(document).find('head');

// empty the current head -- later on we'll just empty things like title
head.empty();

// add all the crap
stub.find('stub-head').children().appendTo(head);

Или это просто очень плохая идея? Я протестировал в современных браузерах, и, кажется, все работает нормально, есть ли подводные камни в старых браузерах?

Ответы [ 2 ]

1 голос
/ 26 октября 2011

Динамический контент обычно отправляется в формате, таком как xml или json.Ваш пень действительно xml.Затем вы устанавливаете свойство innerhtml нужного узла.Это очень похоже на то, что вы делаете.Попробуйте указать свои свойства идентификаторов узлов.Тогда вы сможете получить к ним более легкий доступ.Вы можете сказать что-то вроде:

document.getElementsByTag('p')[4].innerhtml = some_variable;

или

document.getElementByID('dynamic_li').innerhtml = your_text;
1 голос
/ 26 октября 2011

Я не вижу проблем с тем, что вы делаете.Вы можете сделать это проще с JS или JQuery.Также при условии, что вы приняли во внимание SEO и доступность с этим подходом.

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