knockoutjsforeach在IE 9中不起作用

knockoutjs foreach not working in IE 9

本文关键字:不起作用 IE knockoutjsforeach      更新时间:2023-09-26

这是一个模拟聊天的简单应用程序。我提供jsfiddle:

http://jsfiddle.net/LkqTU/2785/

一些消息来自服务器,由按钮模拟,用户在绑定到keypress事件的文本区域上键入,以获取输入键并发送消息。

嗯,这在Chrome和Firefox中运行良好,但在IE9中失败了。

可能出了什么问题?

感谢

找到错误相对容易:在Model函数的开头将this分配给名为self的外部变量看起来不太正确。

解释为什么它在Chrome和Firefox中运行良好,但在IE中失败,要有趣得多。显然,无变量self指的是window.self,这实际上是window对象的一个特殊属性——对…window本身(MDN)的引用。

Internet Explorer实际上以其对该属性的特殊处理而闻名:而在其他浏览器中,window === window.self的计算结果为true,在IE中为false。我不会说IE做这件事没有任何理由;有关详细信息,请查看此讨论。

具有讽刺意味的是,在这个特殊的例子中,IE变成了半英雄。)我说"英雄",因为IE是唯一不让你覆盖window.self的浏览器。其他人都不那么挑剔;在脚本末尾添加console.log(window.self),见证他们的耻辱。)

我说"一半",因为IE可以更。。。与其默默地忽略window.self = ...行(并以稍微不同的方式为使用被忽略赋值的远行抛出错误),IE为什么不提前发出警告呢?该死,即使是通知也行。

不管怎样。很容易不依赖IE的零星英雄主义:只需在脚本开头添加'use strict'行,瞧!Chrome和Firefox都会在其所属位置(self = this行)发出"引用错误"警告。)

是的,我知道"严格使用"并不是一个简单的步骤,它可能会破坏一些脚本;然而,我完全支持尼古拉斯·扎卡斯关于该主题的声明