AJAX响应正在返回完整的HTML页面。我需要在正文(<body>
和</body>
)标记之间提取片段。这需要使用JavaScript在客户端完成。任何帮助将不胜感激。
答案 0 :(得分:4)
最简单但最糟糕的方式是对响应文本进行简单的字符串黑客攻击。
var bodyhtml= html.split('<body>').pop().split('</body>')[0];
这在一般情况下是不能令人满意的,但如果您知道返回的HTML的确切格式(例如,<body>
上没有属性,那么序列<body>
和</body>
未在页面中间的评论中使用,等等。)
另一个仍然非常糟糕的方法是将整个文档写入新创建的innerHTML
的{{1}}并删除所需的元素,而不是关心写作<div>
或<html>
内的<body>
被破坏。你将无法通过这种方式可靠地将<div>
的子元素与<head>
中的子元素分开,但这就是jQuery所做的。
更强大但更痛苦的方法是使用单独的HTML文档:
<body>
虽然这也会执行文档中的所有脚本,但可能会更改它,因此可能也不会令人满意。
答案 1 :(得分:0)
如果您的HTML页面在Web上,那么您可以使用YQL。
例如,如果您的网页网址为http://xyz.com/page.html,并且您希望body元素中包含所有内容 喜欢这个
select * from html where url="http://xyz.com/page.html" and xpath='//body'
如果您是YQL的新手,请阅读此http://en.wikipedia.org/wiki/YQL_Page_Scraping
使用Chromyqlip Extension https://chrome.google.com/extensions/detail/bkmllkjbfbeephbldeflbnpclgfbjfmn
也可以使用简单的方法希望这会对你有所帮助!
答案 2 :(得分:0)
// Get the XML object for the "body" tag from the XMLHttpRequest/ActiveXObject
// object (requestObj).
// NOTE: This assumes there is only one "body" tag in your HTML document.
var body = requestObj.responseXML.getElementsByTagName("body")[0];
// Get the "body" tag as an XML string.
var bodyXML;
// for Internet Explorer
if (body.xml) {
bodyXML = body.xml;
}
// for every other browser
if (typeof (XMLSerializer) != "undefined") {
var serializer = new XMLSerializer();
bodyXML = serializer.serializeToString(body);
}
这将为您提供“body”标记的XML,作为字符串。不幸的是,它仍然包含“&lt; body&gt;”和“&lt; / body&gt;”,所以如果你只想要标签的内容,你将不得不将它们剥离。
您可能需要查看this page上的第二个示例(“示例HTML代码2”)。