使用jquery从ajaxed正文中提取文本
我试图从通过ajax下载的正文中提取文本 我不能将这个新的主体注入iframe或我的元素中,因为其中的脚本可能会破坏我的页面 我所希望的是:使用jquery从ajaxed正文中提取文本,jquery,html,ajax,dom,html-parsing,Jquery,Html,Ajax,Dom,Html Parsing,我试图从通过ajax下载的正文中提取文本 我不能将这个新的主体注入iframe或我的元素中,因为其中的脚本可能会破坏我的页面 我所希望的是: $.ajax({ type: "GET", dataType: "text", /* this will avoid evaluating scripts */ url: href, success: function (data) { var body = data.split('<body').pop().split('<
$.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);
});
我曾尝试将下载的body放入DIV元素,因为jQuery忽略body,将find.remove替换为detach,但没有成功
有标准溶液吗
谢谢为您完成这一切删除脚本并选择性地仅捕获所需的片段
例如
将带有id容器的元素的内容从url ajax/test.html加载到当前页面上具有id结果的元素中。为您完成所有操作删除脚本并选择性地仅捕获所需片段
例如
将具有id容器的元素的内容从url ajax/test.html加载到当前页面上具有id结果的元素中。jQuery不会忽略主体,请参阅 这不管用吗
$.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);
}
});
jQuery不会忽略主体,请参阅 这不管用吗
$.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);
}
});
$data将创建断开连接的片段,但IE将执行包含的脚本。所以,在创建片段之前,您需要去除它们。这是jQuery.load已经做过的事情。load只在将html插入元素时有用,但我必须将其放入变量中以进行进一步处理。我也不得不避免执行脚本。我需要的是正文中的文本,而不是从我最初的问题中可以看到的HTML。这对我现在很管用。var pageText=$data.not'script'。not'style.text;我必须强制执行脚本删除,因为在某些情况下,$data.text没有删除脚本或样式。$data将创建断开连接的片段,但IE将执行包含的脚本。所以,在创建片段之前,您需要去除它们。这是jQuery.load已经做过的事情。load只在将html插入元素时有用,但我必须将其放入变量中以进行进一步处理。我也不得不避免执行脚本。我需要的是正文中的文本,而不是从我最初的问题中可以看到的HTML。这对我现在很管用。var pageText=$data.not'script'。not'style.text;我必须强制执行脚本删除,因为在某些情况下,$data.text没有删除脚本或样式。嗨,Marko,我只想捕获文本,而不是整个元素。通过调用load,它也将尝试下载图像。另一个问题是作为选择器使用的BODY没有加载任何内容。如果我理解正确:可以在断开连接的div节点中加载它,使用$create它,这样它就不会触发资源加载,那么该节点的整个.html就是响应的BODY的标记,或者.text就是响应的文本内容。您不需要特殊的选择器来选择所有内容。即使使用分离的div-load,它仍在尝试从下载和加载脚本。另一个问题是文本方法被忽略,很可能是其他方法。我需要捕捉这段文字。例如,在调用text之后,我将释放所有重要的文本。嗨,Marko,我所要做的只是捕获文本,而不是整个元素。通过调用load,它也将尝试下载图像。另一个问题是作为选择器使用的BODY没有加载任何内容。如果我理解正确:可以在断开连接的div节点中加载它,使用$create它,这样它就不会触发资源加载,那么该节点的整个.html就是响应的BODY的标记,或者.text就是响应的文本内容。您不需要特殊的选择器来选择所有内容。即使使用分离的div-load,它仍在尝试从下载和加载脚本。另一个问题是文本方法被忽略,很可能是其他方法。我需要捕捉这段文字。例如,在调用文本后,我将释放所有重要的文本。