2011-02-23 154 views
0

我有一個頁面,它有兩個標題標籤(這是由於運行時我們在另一個頁面中包含頁面)。目前,我在瀏覽器中看到第一個標題標記值,但我想顯示第二個標題標記的值。這裏是我的代碼,這在Firefox和Chrome中運行良好,但不在IE7中。有什麼建議麼?IE問題,同時使用jquery替換另一個標題標籤內容的標題標籤內容

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

回答

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

但是,如何閱讀第二個標題標籤的值? $(document).find('title')在IE中不工作.. – jgg 2011-02-23 19:04:30

+0

它正在工作,但'$(this).text()'不是。有關更多信息,請參閱我的修訂答案 – Intelekshual 2011-02-23 19:58:10

1

您不能獲得第二個標題的值,因爲IE不包含在DOM中。