Вы можете переместить if
до cy.get
, чтобы ваша логика больше не была вложена в .each
const els = cy.get(...)
if (something) {
cy.then(() => els.should('not.contain', contactID))
} else {
els.each(...)
}
Эти отчет об ошибках quirksmode.org и комментарии о innerHTML поведении Internet Explorer могли помочь:
" IE применяется нормализация HTML к данным, которые присвоены innerHTML свойству. Это вызывает неправильный дисплей пробела в элементах, которые должны сохранить форматирование, такое как < pre> и < textarea>. "
Это работает в IE?
document.getElementById("putItHere")
.appendChild(document.createTextNode("first line\nsecond line"));
я протестировал его с Firefox, и это работает. :-)
Обходное решение может быть найдено на странице, связанной с в принятом ответе. Для простоты использования здесь это:
if (elem.tagName == "PRE" && "outerHTML" in elem)
{
elem.outerHTML = "<PRE>" + str + "</PRE>";
}
else
{
elem.innerHTML = str;
}
<br/>
shoud только производят одну строку во всех браузерах. Конечно, удалите \n также, код должен быть:
document.getElementById("putItHere").innerHTML = "first line<br/>second line";
Содержание в эти <pre>
тег нельзя считать HTML.
На самом деле, точка <pre>
тег - то, так, чтобы это действительно отобразило форматированный текст.
Используя innerText свойство корректный способ изменить содержание <pre>
тег.
document.getElementById("putItHere").innerText = "first line\nsecond line";
Я считаю это.
то, Что я нашел, было IE, использует \r\n, и Fx (другие) использует \n
var newline;
if ( document.all ) newline = '\r\n';
else newline = '\n';
var data = 'firstline' + newline + 'second line';
document.getElementById("putItHere").appendChild(document.createTextNode(data));
Для TinyMCE (WYSIWYG-редактор) плагин, который я когда-то сделал, я закончил с использованием BR i режимов редактирования и вымылся, это на отправляет и т.д.
Этот код циклы через все элементы BR внутри ПРЕД элементы, и заменяет BR новыми строками.
Примечание, что код полагается на TinyMCE API, но может легко быть написан с помощью стандартного JavaScript.
Вымойтесь:
var br = ed.dom.select('pre br');
for (var i = 0; i < br.length; i++) {
var nlChar;
if (tinymce.isIE)
nlChar = '\r\n';
else
nlChar = '\n';
var nl = ed.getDoc().createTextNode(nlChar);
ed.dom.insertAfter(nl, br[i]);
ed.dom.remove(br[i]);
}
Удачи!
if (typeof div2.innerText == 'undefined')
div2.innerHTML = value;
else
div2.innerText = value;
это работало на меня.
Я обнаружил, что innerHTML обрабатывается до его применения к элементу, поэтому
становится новой строкой и удаляются несколько пробелов.
Чтобы сохранить необработанный текст, необходимо например, используйте nodeValue;
document.getElementById('pre_id').firstChild.nodeValue=' white space \r\n ad new line';
Если вы не хотите использовать externalHTML, вы также можете сделать следующее для IE, если дополнительный предварительный тег не является проблемой:
if(isIE)
document.getElementById("putItHere").innerHTML = "<pre>" + content+"</pre>";
else
document.getElementById("putItHere").innerHTML = content;