【问题标题】:jQuery text highlighting text nodes break in IEjQuery文本突出显示文本节点在IE中中断
【发布时间】:2014-04-11 04:48:54
【问题描述】:

我目前正在使用这个名为 HighlightJS 的出色插件,当他们在过滤器字段中键入内容时突出显示页面上的文本。

这很好用,除了最近我们从一个非常旧的 jQuery 版本(1.8.2 到 1.11.0)进行了更新,这在 IE(所有版本)中不再像预期的那样工作。它似乎将单个文本节点分解为每个搜索项目的文本节点。当我不断添加和删除 keyup 事件的突出显示时,这是有问题的。

这里是以前单个文本节点现在在 IE11 检查器中显示为多个的屏幕截图。


我已经整理了一个演示,在 IE here 中以相同的方式中断

关于如何改进此插件以使其正常工作的任何想法?我一定会在 GitHub 上向他提出拉取请求,以便其他人也能从中受益!

【问题讨论】:

  • 什么是:icontains 不应该是:contains 吗?
  • Fiddle 乍一看似乎在我的 Win 7 IE 10 VM 中运行良好。我应该做些什么来证明它不起作用?
  • @Pavlo - :icontains 是我做的,所以这是一个不区分大小写的搜索。小提琴中包含的代码如下。
  • @JasonReid - 进行一次搜索,然后再进行一次搜索。尝试在单词中间搜索东西。 “adam”然后“male”然后“am”然后“da”请记住,突出显示是我遇到的问题,而不是项目的显示/隐藏。
  • 奇数。我根本没有遇到任何突出显示的问题。在 Win 7 VM 上运行 IE10,在另一个 VM 上运行 IE9。不幸的是,手边没有 IE11。

标签: javascript jquery internet-explorer highlight textnode


【解决方案1】:

我遇到了同样的问题,并将其与 IE11 中本机 DOM normalize() 函数实现的错误行为隔离开来。我已经针对我的问题发布了一些复制步骤和解决方法:

Why Does IE11 Handle Node.normalize() Incorrectly for the Minus Symbol?

【讨论】: