1

我的 Web 应用程序的 UI 主要是使用出色的 Knockout.js 构建的。它在 IE7 兼容模式下显示 IE8 中的一些布局错误。我尝试添加一个元标记来强制标准模式,如下所示:

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

但是,在 IE9 的 IE9 兼容性视图下(我必须假设某些用户已经设置),当 Knockout 进行绑定时,这会导致错误:

DOM 异常:INVALID_CHARACTER_ERR (5)

我在网上找到了很多关于这个错误的引用——与创建 DOM 元素的方式有关——但显然我没有控制这一点,Knockout 是。

什么是强制(或鼓励)所有当前和未来版本的 IE 以标准模式呈现的强大且最小化的方式,这也与 Knockout.js 构建 DOM 的方式兼容?另外,任何人都可以详细说明 Knockout.js 在这里做什么,IE9 不喜欢吗?非常感谢。

更新:

我已经在我的标记中隔离了至少一个问题。我有一对单选按钮:

        <input type="radio" data-bind="checked: Gender, attr: { name: 'gender-' + ID() }" value="@((int)Sex.Male)" />
        <span>Male</span>
        <input type="radio" data-bind="checked: Gender, attr: { name: 'gender-' + ID() }" value="@((int)Sex.Female)" />
        <span>Female</span>

这对单选按钮的名称属性生成为“gender-”加上当前绑定的视图模型的 ID,因为我有一个包含这对单选按钮的多个实例的深层层次结构。因为我使用 Knockout 生成名称属性,所以我没有针对标记中的输入指定它 - 当我还添加手动名称(例如“joe”)时,这会在浏览器模式下正确绑定:“IE9 兼容性视图” . 因此,就好像在兼容模式下,单选按钮被 IE 视为无效,因为它没有名称属性。但它在浏览器模式下工作:“IE9”。

此外,这与 IE-edge 元标记无关,无论何时切换到兼容性视图都会失败 - 但我的下一个问题是,为什么该元标记不覆盖浏览器设置?

4

1 回答 1

1

尝试用引号包裹名称属性。

 <input type="radio" data-bind="checked: Gender, attr: { 'name': 'gender-' + ID() }" value="@((int)Sex.Male)" /> 

在下面的评论中查看答案详情

于 2012-07-26T12:43:50.450 回答