获取带链接的页面标题

时间:2012-10-10 13:23:03

标签: javascript jquery page-title

我在文本框中有一个链接。当我单击一个按钮时,我想获取链接页面的标题。如何用javascript或jQuery做到这一点?

5 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

如果页面在同一个域中,我会说使用ajax请求并从返回的DOM对象中获取标题。

如果它是一个不同的域名,我会说设置一个隐藏的IFrame到该位置,当它加载时使用类似的东西获取标题:

document.getElementById('MyIframe').document.title

答案 2 :(得分:0)

几乎总是由后端脚本/抓取工具完成。它在服务器端为您提取网页,并通过AJAX返回已解析的数据

答案 3 :(得分:0)

尝试这样的事情

<a href="http://www.google.com" id="googleLink">Google</a>
<span id="titleGoesHere"></span>

-

$(document).ready( function() {
    $('#googleLink').click(function(){
        $.get(this.prop('href'), function(data) {
            var $temp = $('<div id="tempData" />');
            $temp.append(data);
            var title = $('title', $temp);
            $('#titleGoesHere').html(title.val());
        });
    });
});

答案 4 :(得分:0)

  

出于安全原因,浏览器限制了从脚本内部发起的跨域HTTP请求。而且,因为我们在前端使用客户端Javascript进行Web抓取,所以可能会发生CORS错误。

     

...

     

牢牢地保留在前端脚本中,我们可以使用跨域工具,例如任何起源,任何起源,所有起源,跨域以及可能更多。我发现您经常需要对其中的一些进行测试,以找到可以在您要抓取的网站上运行的软件。

this post中,我写了这个工作独立的小提琴:

function replaceAll(str, find, replace) {
    return str.replace(new RegExp(find, 'g'), replace);
}

const url = "https://www.facebook.com/"

$.getJSON('https://allorigins.me/get?url=' + encodeURIComponent(url) + '&callback=?', function(data){
    const content = replaceAll(data.contents, "<script", "<meta");
    $("#content").append(content);
    const d = $("#content");
    $('#title').text(d.find('title').text());
  $('#description').text(d.find('meta[name=description]').attr("content") || "None");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="content" style="display: none;">
</div>

<h3 id="title">Waiting...</h3>

<br/>

<p id="description">Waiting...</p>


一些评论:

  • 通过https使用跨域工具
  • 别忘了encodeURIComponent您的网址
  • 我将script标记替换为meta标记,以便在附加到DOM时不执行任何标记(替换此question的功能)
  • 要使用解析的jQuery,必须将其添加到dom中(请参见this question