Динамическое обновление <link type = "application / rss + xml"> - PullRequest
0 голосов
/ 16 июня 2009

Мы попытались динамически обновить наши rss-ссылки (используя JavaScript) в разделе заголовка HTML-документа, чтобы отразить изменения на странице из-за фильтрации с помощью AJAX. Кажется, что они не всегда обновляются в разных браузерах (см. Рисунок ...).

( edit : Под неправильным обновлением я имею в виду ссылку в адресной строке, а не сам DOM.)

  • Кто-нибудь знает метод, который делает это возможным (без загрузки страницы)?
  • Можете ли вы опубликовать пример того, как это делается?

Большое спасибо.

edit : у меня нет примеров кода, но мы попробовали следующее:

  1. Изменен атрибут href с использованием PrototypeJS writeAttribute
  2. Удалите старый тег и вставьте новый элемент ссылки в раздел head

edit2 : Вот примеры кода, которые не работали (serverResponse - это объект, переданный функции, содержащей этот код. RssLink - это свойство этого объекта и всегда определяется):

// Update <link> 
var headLink = $('rssHead1'); 
// if we don't have a link in the header, create that element 
if(!headLink) { 
   var head = $$('head').first(),
       tag = '<link id="rssHead1" type=\"application/rss+xml\" rel="alternate">'
   head.insert(tag); 
   headLink = $('rssHead1'); 
} 
headLink.writeAttribute('href', serverResponse.rssLink); 
headLink.writeAttribute('title', 'Monitor this search'); 

Вторая попытка:

// Update <link> 
var headLink = $('rssHead1'); 
if(headLink) { headLink.remove(); }

headLink = new Element('link', {'id' = 'rssHead1',
                                'type' = 'application/rss+xml',
                                'rel' = 'alternate',
                                'href' = serverResponse.rssLink,
                                'title' = 'Monitor this search'});
$$('head').first().insert({bottom: headLink});

1 Ответ

1 голос
/ 16 июня 2009

Ваш первый пример работает на самом деле, DOM правильно изменен. Но, например, при рассмотрении Firefox, печатка rss в адресной строке не обновляется: (

изменить: ваша вторая попытка должна быть:

// Update <link> 
var headLink = $('rssHead1'); 
if(headLink) { headLink.remove(); }
headLink = new Element('link', {
  'id': 'rssHead1',
  'type': 'application/rss+xml',
  'rel': 'alternate',
  'href': serverResponse.rssLink,
  'title': 'Monitor this search'
});
$$('head').first().insert({bottom: headLink});

Также корректно изменяет элемент head, но ссылка rss в адресной строке не обновляется.

...