2012-07-17 60 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

相关问题