【问题标题】:Get Websites Title获取网站标题
【发布时间】:2013-12-06 07:47:20
【问题描述】:

我正在尝试检索链接的 URL 标题。

例如获取这个的标题:

<a class="stack" href="http://stackoverflow.com" title="Stack Overflow">

将通过以下方式动态生成:$('.stack').attr("title", "....");

是否可以使用 javascript 或 jQuery 来检索 URL 的标题?

非常感谢

【问题讨论】:

  • 那么你想得到你选择的一个url的标题,还是那个元素的title属性?
  • @ItayMoav 我知道很抱歉试图改进。
  • @drake 我正在尝试检索 href 的标题。

标签: javascript jquery url attributes title


【解决方案1】:

花了一点时间来制作,但是这个例子允许你从你的网页下载一个网页。然后从标题标签中提取标题。

<html>
<head>
<!-- jQuery include -->
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

<!-- This include allows cross domain get requests -->
<script type="text/javascript" src="https://raw.github.com/jamespadolsey/jQuery-Plugins/master/cross-domain-ajax/jquery.xdomainajax.js"></script>

<!-- Sample -->
<script type="text/javascript">
$(document).ready(function(){
    //gets the href of the first anchor
    var url = $("a").first().attr("href");

    //sets a get request to get the html source
    $.get(url, function(data){
        //uses get string between function to get the text between the title tags
        //then calls it in a message box
        alert(getStringBetween(data.responseText, "<title>", "</title>"));
    }); 
});

function getStringBetween(input, start, end){
    var index = input.indexOf(start);

    if(index != -1){
        index += start.length;
        var endIndex = input.indexOf(end, index + 1);

        if(endIndex != -1)
            return input.substr(index, endIndex - index);
    }
    return false;
}
</script>

</head>
<body>
    <a href="http://www.google.com/">Google</a>
</body>
</html>

【讨论】:

  • 这仅适用于您的域。此外,您应该使用 jQuery 解析 HTML,而不是进行字符串匹配。 (&lt;tiTle&gt;呢?)
  • @SLaks 你试试我刚刚给出的代码,然后声称它不起作用。
  • 您使用的是服务器端代理;我没有注意到。
【解决方案2】:

是的,只需使用document.title。简单有效。

$('.stack').attr("title", document.title);

编辑:看来我误解了你的问题。如果你想获取另一个页面的标题,而不是当前加载的页面,你可以做一些跨域的 AJAX 技巧,但这通常不是一个好主意。我只是抓取页面标题服务器端(在您用来生成页面 [php、asp 等] 的任何内容中)并输出它。

【讨论】:

  • 这会将链接的标题设置为当前页面的标题 (document.title)。不要认为那是 OP 想要的。
【解决方案3】:

出于安全原因,您无法使用 Javascript 读取来自不同网站的内容,即使只是读取标题也是如此。

您可以编写一个服务器端代理来请求远程页面并使用 HTML 解析器找到其 &lt;title&gt; 标记。

但是,您不应该在客户端执行此操作;这会浪费时间和资源。
如果您真的想这样做,请在服务器上执行一次,作为创建新页面时的预处理步骤。

【讨论】:

  • 好吧,我明白了。基本上我正在寻找像著名的书签网站使用的东西。例如delicious.com 为您提供该页面的标题...这有意义吗?
  • 他们提前在服务器上做。
  • 在您的编辑中:这是一个小书签网站。我想不出另一种方法来做到这一点。我的意思是客户添加一个网站,你需要给他一个标题...
  • 你的意思是使用服务器端代理?
  • 是的。如果您需要在重新加载之前显示用户添加的标题,则需要将 AJAX 与代理一起使用。否则,您应该在添加书签并将其存储在数据库中时查找标题。
【解决方案4】:

除非 URL 的 href 位于当前文档的域中,否则使用 JavaScript 尝试获取目标文档的标题将需要跨域脚本,这通常是浏览器不允许(使用传统方法)的。除非您真的很喜欢代理(不完全确定它是如何完成的),否则您首先需要一种服务器端语言来加载文档。

【讨论】:

  • 或者,基本上是 SLaks 所说的!抱歉,没有看到你的答案!
  • 使用正确的插件时不需要服务器端脚本
  • @Drake:错了。除非页面在你身边(他暗示它不在),否则你需要服务器端代码。
猜你喜欢
  • 1970-01-01
  • 2011-05-19
  • 2021-12-11
  • 2018-06-11
  • 1970-01-01
  • 1970-01-01
  • 2012-07-02
  • 2014-02-18
相关资源
最近更新 更多