我正在尝试从通过ajax下载的正文中提取文本。
我无法将这个新主体注入iframe或我的某个元素中,因为其中的脚本可能会破坏我的页面。
我希望能为我做的是:
$.ajax({ type: "GET",
dataType: "text", /* this will avoid evaluating scripts */
url: href,
success: function (data) {
var body = data.split('<body').pop().split('</body>')[0];
if (body) {
body = '<body' + body + '</body>';
var pageText = $(body).find("style").remove().end()
.find("script").remove().end()
.find("noscript").remove().end()
.text().replace(/\s{2,}/gi, " ").toLowerCase();
if (pageText.length > 0)
console.log(pageText);
});
我尝试将下载的主体放入DIV元素,因为jQuery忽略了BODY,用detach替换了find.remove,但没有取得多大成功。
有没有标准解决方案?
由于
答案 0 :(得分:1)
jQuery.load()为您完成所有操作(删除脚本并可选择仅捕获所需的片段)。
E.g。
$('#result').load('ajax/test.html #container');
将来自网址container
的ID为ajax/test.html
的元素的内容加载到ID为result
的元素(当前页面)上。
答案 1 :(得分:0)
jQuery不会忽略正文,请参阅here。
这不起作用吗?
$.ajax({ type: "GET",
dataType: "text", /* this will avoid evaluating scripts */
url: href,
success: function (data) {
var $data = $(data);
var newHTML = $("body", $data).html();
$("body").html(newHTML);
}
});