#javascript #html #css
#javascript #HTML #css
Вопрос:
У меня есть функция JS, которая копирует Div в буфер обмена для вставки в Outlook в виде электронного письма, однако в IE и Edge Chromium он показывает элементы, которые скрыты, style="display:none"
которые не должны отображаться в электронных письмах. Является ли это ограничением Chromium / IE, поскольку ранее это нормально работало в Edge Legacy?
function copyEmail(el) {
var body = document.body, range, sel;
if (document.createRange amp;amp; window.getSelection) {
range = document.createRange();
sel = window.getSelection();
sel.removeAllRanges();
try {
range.selectNodeContents(el);
sel.addRange(range);
} catch (e) {
range.selectNode(el);
sel.addRange(range);
}
} else if (body.createTextRange) {
range = body.createTextRange();
range.moveToElementText(el);
range.select();
}
document.execCommand("Copy");
}
<input type="button" value="Copy Email Content" onclick="copyEmail(document.getElementById('emailcontentcopy'))">
<div id="emailcontentcopy">
<table style="display:none">
<tr><td>content not to display</td></tr>
</table>
<table style="display:block">
<tr><td>content to be shown</td></tr>
</table>
</div>
Комментарии:
1. Вы можете найти скрытые элементы и удалить их, если вы можете использовать jQuery, вы можете найти скрытый элемент
jQuery(element).is(":visible")
. повторите дочерние элементы и найдите скрытые элементы и удалите их.2. Будет ли это работать, если части элемента видны? например, таблица видна, но третья строка скрыта?
3. Да, jQuery найдет третью строку, которая не будет видна, и удалит ее.
Ответ №1:
Электронные письма сложны и содержат совершенно новый набор ожидаемых поведений и соответствующие исправления ошибок.
Лучшим решением было бы удалить таблицу, которую вы не хотите показывать, вместо того, чтобы просто скрывать ее.
Если вы не можете удалить его, попробуйте добавить атрибут Outlook mso-hide:all
в скрытые таблицы. Для других почтовых серверов попробуйте display:none !important
.