Jquery 删除输出上的头部和身体标签

Jquery removing head and body tags on output

本文关键字:标签 头部 删除 输出 Jquery      更新时间:2023-09-26

我有这段代码,可以从HTML电子邮件的链接标签中删除所有空格。代码运行良好,我遇到的唯一问题是它似乎删除了 head 标签内的内容,并删除了输出</body>标签的开始<body>和关闭。有人可以帮我了解发生了什么吗?

JSBin 在这里。

我的JavaScript代码如下:

$('#submit').click(function(){
    var original = $('#replace').val();
    var output = $('<html/>').html(original);
    output.find('a').each(function() {
        var self = $(this);
        var href = self.attr('href');
        if (href) {
            self.attr('href', href.replace(/['n'r]/g, ''));
            self.attr('href', href.replace(/'s+/g, ''));
        }
    });
    $('#result').text(output.html());
});

如果我运行 JSbin 并输入一些 HTML,结果如下:

输入

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE" />
 <meta name="format-detection" content="telephone=no" />
 <meta http-equiv="X-UA-Compatible" content="IE=edge" />
 <meta name="viewport" content="width=device-width">
 <meta name="robots" content="noindex" />
 <title>TEST</title>
 <style type="text/css">
 table td {
 </style>
 </head>
 <body yahoo="fix" style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; margin: 0; min-height: 1000px; padding: 0; width: 100%; background:#ffffff;" bgcolor="#FFFFFF">
 <div>test</div>
 </body>
 </html>

输出

    
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE">
 <meta name="format-detection" content="telephone=no">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width">
 <meta name="robots" content="noindex">
 <title>TEST</title>
 <style type="text/css">
 table td {
 </style>
 
 
 <div>test</div>
 
 

如您所见,HTML标签,头部标签和正文标签丢失了。虽然里面的所有内容都保留了下来。

不确定这是否是您想要的,但它似乎是您的 html 选择失败了。尝试

 var output = $(document.documentElement);

在以下地点:

  var output = $('<html/>').html(original);

现在,您从输出的文档根目录中选择所有节点。也许我理解错了你的问题