在我的网站上,所有网页都有<head>
的作者:
<meta name="Author" content="Mark Brown" />
我想创建一个链接页面,并在每个调用该页面的作者元数据内容值旁边使用jQuery。
我尝试过这个并没有用:
.load( '{URLHERE}' + $('meta[name=Author]').attr('content') )
抱歉,我是一名JS新手。我似乎.load()
只获取body
标记内的内容?是对的吗?我有什么想法吗?
答案 0 :(得分:3)
.load
将内容加载到您似乎不想要的目标元素中。您想使用.get
$.get(url, function() {
var author = $('meta[name=Author]').attr('content');
// do what you need with author
})
编辑:在被指出此代码从当前页面而不是所需页面获取数据后,我尝试过这样的事情:
$.get(url, function(result) {
var author = $(result).find('meta[name=Author]').attr('content');
});
但事实证明,即使结果有元标记,查找也不会返回任何内容。尝试找到div $(result).find('div')
可以正常工作。有可能将结果附加到dom元素并查询:
$.get(url, function(result) {
var dom = $('<div></div>').html(result);
var author = dom.find('meta[name=Author]').attr('content');
});
它有效,但它的速度非常慢。我建议使用服务器端方法来检索这些数据。如果你有X链接,客户端解决方案会发出X请求,这可能是浪费。
答案 1 :(得分:0)
你是对的,来自文档:
jQuery使用浏览器的.innerHTML属性来解析检索到的 记录并将其插入当前文档。在此过程中, 浏览器经常过滤文档中的元素,如html, 标题或头元素。结果,检索到的元素 .load()可能与检索文档时不完全相同 直接通过浏览器。
您可以创建一个小型服务器端脚本来获取文档并为您执行html解析并相应地返回元数据。然后,您可以通过ajax调用此脚本。
答案 2 :(得分:0)
您可以分两个阶段使用load
事件:
$("#your-target").load("{URLHERE} meta[name='Author']", function(response, status, xhr){
var $meta = $("meta", this);
$(this).text($meta.attr("content"));
$meta.remove();
});
这会先将meta
标记加载到您的目的地,然后使用complete
callback
,您可以获取作者属性的值。