从HTML获取标题

时间:2013-07-03 15:54:05

标签: javascript jquery meteor

我有一个服务器端函数,它返回HTML页面的内容:

if (Meteor.isServer) {
  Meteor.startup(function () {
    // code to run on server at startup

    Meteor.methods({
      sayHello: function() {
        var response = Meteor.http.call("GET", "http://google.com");
        return response;
      }
    });
  });

我有客户端代码,我想从这个HTML页面获取标题:

'click .add_tag':function(e,t){       //Session.set('editing_tag_id',e.target.id);

  Meteor.call("sayHello", function(err, response) {
    var title = $(response.content).find("title").text();
    var title2 = $(response).find("title").text();
    var title3 = response.content.match(/<title[^>]*>([^<]+)<\/title>/)[1];
    alert(title3);
  });

我想获得jQuery版本('title'或'title2'),但它不起作用。它返回空字符串。

'Title3' - 版本工作正常,但我不喜欢正则表达式。 :)

有没有办法让'jQuery'版本有效?

3 个答案:

答案 0 :(得分:1)

根据要求,我将重申我的评论作为答案......

我会坚持使用正则表达式,即使你不喜欢它。构建一个基本上是整个页面的DOM元素有很大的开销,纯粹是为了解析少量文本。正则表达式更轻巧,可以在较慢的浏览器或较慢的机器上充分运行。

答案 1 :(得分:0)

response.content中换行<div>,然后选择该选项。这样你就有了一个合适的结构来开始,而不是你可能真正得到的数组。

var $wrap = $("<div></div>").html(response.content);
$wrap.find("title").text();

可能发生的事情的一个例子:http://jsfiddle.net/UFtJV/

答案 2 :(得分:0)

不要忘记一件事:你永远不应该将HTML返回给客户端。您应该返回Json(甚至是Xml),您的客户端将使用Template转换为Html。 你做的很多开发人员正在做坏Ajax。

不要忘记:“只有线上的数据,不显示”。

因此,应该没有任何问题,因为您只需要从Json格式的响应中获取数据并将其注入模板中。