我有这个HTML页面,我想创建一个收集另一个页面的HTML内容的jQuery方法。
例如,我想获取标签之间的HTML内容,包括子标签,属性,文本..
我想出了类似的东西:
<script>
var page;
$(document).ready(function() {
$.ajax({
type : "GET",
url : "template.html",
dataType : "html",
success : function(html) {
page = $(html).find('body').html();
//do something
}
});
});
</script>
但它不能解决问题。 任何的想法?谢谢。
答案 0 :(得分:4)
您可以使用JQuery Load函数。
$('#result').load('ajax/test.html #container');
此函数从页面container
加载ID为ajax/test.html
的div中的html,并将html放入ID为result
的div中。
答案 1 :(得分:0)
问题是jQuery不会将整个html
页面解析为字符串..
传递复杂的HTML时,某些浏览器可能无法生成完全复制所提供的HTML源的DOM。如上所述,我们使用浏览器的 .innerHTML 属性来解析传递的HTML并将其插入到当前文档中。在此过程中,某些浏览器会过滤掉某些元素,例如
<html>
,<title>
或<head>
元素。因此,插入的元素可能无法代表传递的原始字符串。
所以你需要绕过这个限制..
解决方法是手动将返回的html添加到html元素。
success : function(html){
var ndoc = document.createElement('html');
ndoc.innerHTML = html;
page = $('body', ndoc);
console.log(page);
}