1

IE8 で非常に奇妙な問題が発生しています (IE のバージョンが 8 未満の場合のみ)。問題は attr バインディングにあります。エンコードされた電子メール文字列 (%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 で適切に機能します。

4

1 に答える 1

1

それをデバッグしたところ、Knockout js が DOM メソッド setAttribute() を使用して href を設定していることがわかりました。また、W3School のドキュメントによると、setAttribute() はブラウザー IE9 以降をサポートしているため、それが奇妙な結果の原因になっていると思います。

setAttribute() についても検索しました。他の人も同様の問題に遭遇しました。以下のリンクを参照してください。

https://social.msdn.microsoft.com/Forums/ie/en-US/aa6bf9a5-0c0b-4a02-a115-c5b85783ca8c/javascript-modifying-href-changes-link-text-as-well-for-mailto- protocol?forum=iewebdevelopment

于 2015-07-30T18:23:27.703 に答える