hzhbest
千年狐狸
千年狐狸
  • UID22640
  • 注册日期2008-01-15
  • 最后登录2017-04-06
  • 发帖数1763
  • 经验476枚
  • 威望3点
  • 贡献值414点
  • 好评度89点
  • 社区居民
  • 忠实会员
阅读:1288回复:0

高亮脚本在“互动百科”中的问题

楼主#
更多 发布于:2010-05-29 17:20
首先是重现方式,在 Google 中搜以下关键词:
8月8日 site:www.hudong.com
然后点前三条结果中的任一打开,如果开着 EWH 的话,就会看到效果。

情况是,我的三个高亮脚本:EWH(Enhanced word highlight)、HCT(Highlight Certain Text)和 DT(date highlighter),其中 DT 直接使用 EWH 中的高亮函数(正则匹配、二次HTML代码替换、使用 span 容器),而 HCT 使用 Selected Text Highlighter 的部分高亮函数(字符串匹配、截取目标字符串插入容器、使用 layer 容器)。

在“互动百科”中自动高亮时,如果小节标题包含所高亮的关键词,HCT 和 EWH 就会高亮出问题,高亮容器的部分代码会被当成文本插入,而且高亮不成功,但 javascript 控制台中没有报错;而 DT 高亮起来却没有任何问题。

后来发现,把 DT 中高亮触发的条件从等待网页完整读取改成不设触发条件直接执行的话,DT 也出现同样的问题。然后拿原版 word highlight 也重现了同样的问题。

最后发现,在“互动百科”加载的时候,网站会在网页完整读取时再索引小节标题来生成目录,然后这个动作造成了高亮脚本的问题。

……
但是,将 EWH 安装在 Chromium 上的时候,却没有此问题(难道 Chromium 的机制是在加载完成后再调用?)。
在 Opera 中加载的话,也出现同样的问题。

另外,大家可以用 Firefox 打开
http://www.hudong.com/wiki/激光
看看到“受激辐射”那小节及之后的小节标题;同样的问题在 Chromium 和 Opera 中不存在。

---
既然没人感兴趣,又基于其局限性,我就下结论好了:
土立土及互动百科!
游客

返回顶部