动态更新<link type =“application / rss + xml”/>

时间:2009-06-16 11:27:58

标签: javascript html rss

我们尝试在HTML文档的head部分动态更新我们的rss-links(使用JavaScript),以反映由于使用AJAX过滤而导致的页面更改。看起来这些并不是在浏览器中不断更新(如图......)。

编辑:如果没有正确更新,我的意思是地址栏中的链接,而不是DOM本身。)

  • 是否有人知道一种方法可以实现这一目标(没有页面加载)?
  • 你能发一个如何做的例子吗?

非常感谢。

修改:我没有任何代码示例,但我们尝试了以下内容:

  1. 使用PrototypeJS writeAttribute
  2. 更改了href属性
  3. 删除旧标记并在头部
  4. 中插入新的link-element

    edit2 :以下是无效的代码示例(serverResponse是传递给包含此代码的函数的对象.rssLink是该对象的属性,始终定义):< / p>

    // 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 个答案:

答案 0 :(得分:1)

您的第一个示例实际上正常工作,DOM已正确修改。但是在考虑Firefox时,例如,地址栏中的rss signet没有更新:(

编辑:你的第二次尝试应该是:

// 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链接没有更新。