html - 如何防止 knockout 从 IE8 跨度同级中剥离空文本节点

标签 html knockout.js internet-explorer-8 whitespace knockout-2.0

假设我有 3 个 Span 包裹在一个 div 中。

<div>
    <span>1/1/2000</span>
    <span>-</span>
    <span>1/2/2000</span>
</div>

浏览器应该将跨度之间的换行符解释为空白,以便结果显示如下:

1/1/2000 - 1/2/2000

...不像其中任何一个

1/1/2000-1/2/2000
1/1/2000- 1/2/2000
1/1/2000 -1/2/2000

...当跨度没有 knockout 绑定(bind)时,IE8 就是这种情况。如果您使用 IE8 开发工具检查上述标记,您可以在每个跨度后清楚地看到“文本 - 空文本节点”。

<div>
    <span>1/1/2000</span>
    Text - Empty Text Node
    <span>-</span>
    Text - Empty Text Node
    <span>1/2/2000</span>
    Text - Empty Text Node
</div>

但是,一旦我像这样将 knockout 绑定(bind)放在跨度上,空文本节点的行为就会发生变化:

<div>
    <span data-bind="text: start"></span>
    <span data-bind="visible: end">-</span>
    Text - Empty Text Node
    <span data-bind="text: end"></span>
    Text - Empty Text Node
</div>

...前 2 个跨度之间的空文本节点看起来像是被剥离了。这是一个 knockout 错误吗?有什么解决办法吗?这是使用版本 2.3.0。

最佳答案

knockout::text-binding 中描述的空格存在问题。文档(请参阅注释 4,您的 IE 可能具有怪异模式:开启)。
Knockout 的解决方案是将一些东西放入 span 中。

<div>
    <span data-bind="text: start">&nbsp;</span>
    <span data-bind="visible: end">-</span>
    <span data-bind="text: end">&nbsp;</span>
</div>  

此外,您还可以使用单个 span 元素:

<div>
    <span data-bind="text: start + (end ? ' - ' : '') + end"></span>
</div>

关于html - 如何防止 knockout 从 IE8 跨度同级中剥离空文本节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19336927/

相关文章:

html - Angular - 没有表单标签的表单验证

html - 移动:滚动后 ul 内容消失

javascript - Knockout.js 绑定(bind)范围

javascript - 滚动子 div 仅在 IE8 中滚动页面

css - 无法返回站点 IE8

javascript - 在 javascript 中切换图层

html - 轮播不使用背景 css 显示图像

javascript - 使用knockout js构建的无限滚动在IE9中不起作用

knockout.js - 你可以一起添加指定属性+值的knockoutjs样式绑定(bind)吗?

html - 通过 CSS 向 IE8 中的提交按钮添加色调/颜色,同时保留 "glassy"外观?