我有一个单页应用程序,它使用 Knockout.js 进行数据绑定,使用 Sammy.js 来路由客户端(基于哈希)的 URL。
但是,我在 Internet Explorer 中看到了一个奇怪的问题:有时链接在单击时会更改浏览器地址栏中的 URL,但相应的 Sammy 路由不会执行。
它不会每次都发生(但我可以始终如一地重现错误),它只发生在 IE10 中(Chrome 每次都可以正常工作)。它似乎也与 Knockout 有关,因为一组硬编码链接不会出现相同的问题。
为了说明,我已经剥离了所有内容,除了重新创建问题的最低限度并创建了两个 jsbin 示例:
示例 1(带有 Knockout):http: //jsbin.com/aretis/2/
要查看问题,请打开上面的链接并单击“Record #1”,然后单击“Baz”,然后再次单击“Record #1”。记录 1 的 URL 将出现在地址栏中,但该记录的路由不会附加到列表中。
示例 2(没有淘汰赛):http: //jsbin.com/amivoq/1/
在此示例中,我有一个记录链接的静态列表,而不是数据绑定列表。单击任何链接(以任何顺序)将导致该路线被附加到列表中(应该如此)。
提醒这些必须在 IE 中运行才能重现问题。
有任何想法吗?