我在文本框中有一个链接。当我单击一个按钮时,我想获取链接页面的标题。如何用javascript或jQuery做到这一点?
答案 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>
一些评论:
encodeURIComponent
您的网址script
标记替换为meta
标记,以便在附加到DOM时不执行任何标记(替换此question的功能)