0

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

4

5 回答 5

1

这篇文章可以让你开始

http://forum.jquery.com/topic/get-external-page-and-fetch-title-googled-a-lot-didn-t-find-any-solution

于 2012-10-10T13:28:16.703 回答
0

它几乎总是由后端脚本/爬虫完成。它在服务器端为您获取网页并通过 AJAX 返回解析的数据

于 2012-10-10T13:30:10.150 回答
0

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

如果它是不同的域,我会说将隐藏的 IFrame 设置为该位置,并在加载时使用以下内容获取标题:

document.getElementById('MyIframe').document.title
于 2012-10-10T13:28:36.803 回答
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());
        });
    });
});
于 2012-10-10T13:44:39.603 回答
0

出于安全原因,浏览器会限制从脚本中发起的跨域 HTTP 请求。由于我们在前端使用客户端 Javascript 进行网页抓取,因此可能会出现 CORS 错误。

...

牢牢地保留在我们的前端脚本中,我们可以使用跨域工具,例如 Any Origin、Whatever Origin、All Origins、crossorigin 等等。我发现您经常需要测试其中的一些才能找到可以在您尝试抓取的网站上运行的那个。

这篇文章中,我写了这个工作和独立的小提琴:

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 时不执行任何标签(replace function from this question
  • 要使用,必须将解析后的 jQuery 添加到 dom 中(请参阅此问题
于 2018-07-16T09:00:18.170 回答