编辑:我基本上把事情归结为使用 file:// 协议来重现它所必需的事实。另外,我用 --allow-file-access-from-files 标志启动了 Chrome。我现在使用的是普通的 http 协议,所以对我来说这个问题变得更学术了。如果它有效,那就太好了,或者至少有人可以向我解释发生了什么。
考虑以下 HTML(在文件“a.html”中):
<!DOCTYPE html>
<html>
<head>
<title>Title</title>
<meta charset="utf-8" />
</head>
<body>
<article id="article-id">
<h3 class="entry-title">
Title-h3
</h3>
<div class="entry-content">
</div>
</article>
</body>
</html>
我正在尝试从另一个文件(比如 index.html)加载#article-id 标记的第一个子项,如下所示:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.js"></script>
$.get('a.html', function() {
return function(data)
{
alert(data);
var lTitle = jQuery("<div>").append(data)
.find("#article-id :first-child").html().trim();
alert(lTitle);
}
}());
在 Safari 5.1.3 中,第一个警报给出“[object Document]”,下一个 jQuery 语句抛出 HIERARCHY_REQUEST_ERR。
在 Chrome 19.0.1084.54 中,这似乎按预期工作,我在第一个警报中获得加载的数据,在第二个警报中获得“Title-h3”。
这是 jQuery 中的错误还是我做错了什么?
奇怪的额外信息:如果你添加
<iframe width="500" height="369" src="http://www.youtube.com/" frameborder="0" allowfullscreen></iframe>
在 div 中,Safari 与 Chrome 一样工作。