Jquery 是否在不加载/执行脚本/图像的情况下将HTML字符串转换为HTML DOM?

Jquery 是否在不加载/执行脚本/图像的情况下将HTML字符串转换为HTML DOM?,jquery,html,xml,parsing,dom,Jquery,Html,Xml,Parsing,Dom,我有一个通过Ajax调用从服务器接收的HTML文档,我显然以字符串的形式接收该HTML文档: var serverResponse = "<html><head>......."; (我知道jQuery.parseHTML()的作用与上述相同..) 然后通过执行以下操作来执行我的更改: $html.find('.some-div').eq(2).css('background', 'url(http://some-new/img.jpg)'); 完成更改后,我需要将更

我有一个通过Ajax调用从服务器接收的HTML文档,我显然以字符串的形式接收该HTML文档:

var serverResponse = "<html><head>.......";
(我知道
jQuery.parseHTML()
的作用与上述相同..)

然后通过执行以下操作来执行我的更改:

$html.find('.some-div').eq(2).css('background', 'url(http://some-new/img.jpg)');
完成更改后,我需要将更新后的HTML转换回字符串,并将其发布回服务器


你有什么建议吗?

正如丹·菲尔德所说,最好说出你的最终目标。也许有人知道更好的解决方案。 但是,我认为您希望在创建DOM对象之后删除图像。为此,您可以执行以下操作:

var $html = $(htmlAsString);
$html.find("img").removeAttr("src");
    $html.find("img").each(function(){
        var src = $(this).attr("src");
        $(this).removeAttr("src");
        $(this).attr("data-src", src);
    });
或者,如果不想丢失图像src,可以执行以下操作:

var $html = $(htmlAsString);
$html.find("img").removeAttr("src");
    $html.find("img").each(function(){
        var src = $(this).attr("src");
        $(this).removeAttr("src");
        $(this).attr("data-src", src);
    });

默认情况下,jQuery将处理文档对象,它将解析HTML并将节点附加到文档。为HTML创建单独的DOM文档

var context = (new DOMParser()).parseFromString(serverResponse , 'text/html');
jQuery('.some-div', context)
  .eq(2)
  .css('background', 'url(http://some-new/img.jpg)');

对于支持
的浏览器,您可以使用它轻松存档:

var-template=document.createElement('template');
template.innerHTML='alert(42)';

log([…template.content.children].map(i=>i.outerHTML))
AFAIK我不认为您可以阻止它,但是可以运行一个regexp,将
src=
更改为
data src=
或其他什么。然后,当您准备加载它们时,执行反向操作。如果您指定了更广泛的目标,可能会提供一种比尝试转义html字符串更容易的替代解决方案。例如,您是否正在尝试创建模板?网络垃圾?还有什么吗?我不认为分离的dom节点中的脚本是可以执行的,就我所知,标准指定您是对的,也许值得更清楚地说明我试图实现的目标。请看我的最新作品。你是对的,也许值得更清楚地说明我正在努力实现的目标。请参阅我更新的OP。这是否意味着这样就不会执行脚本,也不会加载文件?否浏览器会呈现文档对象,因此它会获取文档对象的资源。浏览器不会呈现单独的DOM文档实例(它只是另一个变量)。浏览器对此有何支持?恐怕我在网上找不到任何信息。。