使用jquery将标题标记内容替换为另一个标题标记内容时出现IE问题

时间:2011-02-23 18:48:30

标签: javascript jquery html

我有一个页面,其中有两个标题标签(这是因为在运行时我们在另一个页面中包含一个页面)。目前我在浏览器中看到第一个标题标签值,但我想显示第二个标题标签的值。这是我的代码,这在Firefox和Chrome中运行良好,但在IE7中运行不正常。有什么建议吗?

var titleName;
$(document).find('title').each(function(){
    titleName = $(this).text();
});
$(document).attr("title", titleName);

2 个答案:

答案 0 :(得分:1)

你不需要jQuery。它应该在IE(以及所有其他浏览器)中使用vanilla JavaScript。

document.title = 'new title';

由于how IE handles the <title> element,您需要在获取第二个值时给它一些额外的帮助。

var titleName;
// find all title elements using plain ol' javascript
var titles = document.getElementsByTagName('title');

// iterate over array of titles
$.each(titles, function(i, title) {
    // if there are childNodes, then we know we're not in IE
    if (!!title.childNodes.length) {
        titleName = title.firstChild.data;
    }
    // in IE, we can read the title elements innerHTML, but we can't set it
    else if (title.innterHTML) {
        titleName = title.innerHTML;
    }
});
// finally, set the document title
document.title = titleName;

这里的主要问题是IE中的title元素没有任何子节点,因此$(this).text()将不起作用。

如果上述代码适合您,请告诉我。

答案 1 :(得分:1)

您无法获得第二个标题的值,因为IE不会将其包含在DOM中。