从HTML获取标题

Get title from HTML

本文关键字:标题 获取 HTML      更新时间:2023-09-26

我有一个服务器端函数,它返回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':函数(e,t){//会话.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"或"title 2"),但它不起作用。它返回空字符串。

"Title3"版本运行良好,但我不喜欢regexps。:)

有什么方法可以让"jQuery"版本正常工作吗?

根据要求,我将重申我的评论作为回答。。。

我会坚持使用regex,即使你不喜欢它。纯粹为了解析少量文本,构建一个本质上是整个页面的DOM元素会带来巨大的开销。regex更轻,在速度较慢的浏览器或速度较慢的机器上可以充分执行。

response.content封装在<div>中,然后从中进行选择。通过这种方式,您可以从一个适当的结构开始,而不是实际得到的数组。

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

可能发生的情况示例:http://jsfiddle.net/UFtJV/

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

别忘了:"只显示数据,不显示"。

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