我有这段代码可以删除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,结果如下:
输入
<!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;
输出
<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;
正如您所见,HTML标记,头标记和正文标记丢失了。虽然内部的所有内容都保留。
答案 0 :(得分:-1)
不确定它是否是你想要的,但它似乎是你的html选择失败了。试试
var output = $(document.documentElement);
在以下地方:
var output = $('<html/>').html(original);
现在您从输出的doc根目录中选择所有节点。 也许我理解错了你的问题