Закодированный символ прерывает привязку данных Knockout js на IE8
У меня очень странная проблема с IE8 (и только с версией IE ниже 8). Проблема в привязке атрибута, если я добавлю закодированную строку электронной почты (с%26, %40 и т. Д.), Страница не будет отображать привязки данных в текстовом поле ('firstlast@domain.com' в случае ниже), вместо этого он будет отображаться как "mailto:first%26last%40domain.com".
<a data-bind=" visible: Email.length > 0, text: 'firstlast@domain.com', attr:{ href: 'mailto:' + 'first%26last%40domain.com' }"></a>
Странно то, что он прекрасно воспроизводится, если я использую некодированную строку
<a data-bind=" visible: Email.length > 0, text: 'firstlast@domain.com', attr:{ href: 'mailto:' + 'first&last@domain.com' }"></a>
Оба способа работают правильно в Firefox, Chrome и более поздних версиях IE.
1 ответ
Я отладил его и обнаружил, что Knockout js использует метод DOM setAttribute() для установки href. И, согласно документации W3School, setAttribute() поддерживает браузер IE9 и новее, поэтому я думаю, что именно это и приводит к странному результату.
Я также искал вокруг setAttribute(), другие люди также сталкивались с подобной проблемой, см. Ссылку ниже: