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

时间:2016-02-12 12:51:28

标签: javascript jquery html

我有这段代码可以删除HTML电子邮件中链接标记的所有空格。代码效果很好,我唯一能解决的问题是它似乎删除了head标记内的内容,并删除了输出中的开放<body>和关闭</body>标记。有人可以帮我理解发生了什么吗?

JSBin here

我的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,结果如下:

输入

&#13;
&#13;
    <!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>
&#13;
&#13;
&#13;

输出

&#13;
&#13;
    
 <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>

 
 
&#13;
&#13;
&#13;

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

1 个答案:

答案 0 :(得分:-1)

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

 var output = $(document.documentElement);

在以下地方:

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

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