【问题标题】:Encoded character breaks Knockout js data bind on IE8编码字符打破 IE8 上的 Knockout js 数据绑定
【发布时间】:2015-07-29 22:49:12
【问题描述】:

我在 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 上正常工作。

【问题讨论】:

标签: javascript internet-explorer knockout.js internet-explorer-8 javascript-databinding


【解决方案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

【讨论】:

    猜你喜欢
    • 2018-07-18
    • 2012-07-07
    • 1970-01-01
    • 2016-12-09
    • 2016-01-18
    • 2015-03-25
    • 2018-10-19
    • 1970-01-01
    相关资源
    最近更新 更多