使用jquery从ajaxed正文中提取文本

使用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下载的正文中提取文本

我不能将这个新的主体注入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);
});
我曾尝试将下载的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,它仍在尝试从下载和加载脚本。另一个问题是文本方法被忽略,很可能是其他方法。我需要捕捉这段文字。例如,在调用文本后,我将释放所有重要的文本。