2012-07-17 61 views
1

我在一個遊戲網站上,網頁標題並不反映遊戲標題,而是網站名稱和網站描述。每個遊戲的名字出現在其頁面像這樣:如何從網頁抓取文字並將其設置爲document.title?

<div id="gr-header"> 
    <div> 
     <h1><a href='/games/'>Games Room</a> - Some Game Name Here</h1> 
    </div> 
    <div> 
     some other stuff 
    </div> 
</div> 

現在我手動匹配的遊戲ID,在URL,到相應的遊戲標題,做以下其中idlist是包含子集的數組遊戲ID,我打算檢查,gamelist是一個數組,其中包含相應的遊戲名稱按相應的順序。

for (i=0; i < idlist.length; i++) 
{ 
    if (gameid[0] == idlist[i]) 
    { 
     document.title = gamelist[i]; 
     break; 
    } 
} 

但是,這是不雅觀的,因爲有太多的遊戲手動列出它們。我如何從網頁抓取「Some Game Name Here」文本並將所述文本存儲在變量中?

回答

0

使用querySelector和一個簡單的regular expression

var nameElement = document.querySelector ("#gr-header div h1"); 
var gameName = nameElement.textContent.replace (/^.*\s-\s/, ""); 
document.title = gameName; 
+0

它的工作原理非常感謝! – Andrea 2012-07-18 08:34:24

+0

不客氣。如果你真的想要一行代碼,它是:'document.title = document.querySelector(「#gr-header div h1」)。textContent.replace(/^.*\s-\s/,「」);'' ......然而,分離它是更明智的方式,它有助於調試,維護和重用。 – 2012-07-18 11:18:58

0

從您發佈的HTML結構,試試這個

var title = $('#gr-header h1').clone().children().remove().end().text().replace(/^[\W]+/, ''); 
document.title = title; 

那得到h1的直接文本(即不包括其子a的文本)。

(正則表達式刪除 ' - ' 在遊戲名字開始調整/按要求刪除

小提琴:。http://jsfiddle.net/gcMTt/1/

+0

我試圖打印變量「標題」(甚至嘗試更改變量名稱),但沒有出現:(可惜,因爲我愛一個班輪代碼!太漂亮了! – Andrea 2012-07-18 08:36:20

+0

適合我 - 這是證明:http://jsfiddle.ne噸/ gcMTt/1 /。 (JSFiddle使用框架,因此您必須檢查輸出框架的DOM以查看更改後的標題。或者,更好的是,自己嘗試代碼。在3個瀏覽器中適用於我。) – Utkanos 2012-07-21 19:36:06

相關問題