使用createEvent选择另一个元素后面的文本

zat*_*ata 13 html javascript javascript-events selection event-delegation

我有一个场景,我有一些文本,应该是用户可选择的.问题是,它上面有一个UI覆盖,这会阻止默认情况下选择文本.保持叠加层仍然能够选择文本的逻辑方法是使用合成事件(使用document.createEvent),但由于某种原因,它不能按预期工作.

事件似乎被正确委派并触发其处理程序,但未选择任何文本.我在这里有一个例子,这是对问题的粗略简化.

几点说明

  1. 在FF中,如果您在叠加层之外开始选择,您仍然可以选择所需的文本,即使它位于叠加层下方
  2. 当您在未覆盖区域中进行正常选择并单击覆盖图时,可以从委派mousedown事件中删除选择,但不会发生

我错过了一个应该委派的事件(我有mousedown,mousemovemouseup)?或者是浏览器禁用此类行为的某种安全措施(请参阅注释2)?关于如何获得所需结果的任何其他建议?我知道我应该完全解决当前的叠加解决方案,但我已经对问题本身感到好奇.

ion*_*noy 7

我找到了两个解决这个问题的方法:

  1. "pointer-events"css属性.但是需要IE 9.0+.
  2. 好像来自ExtJS的人通过事件转发解决了它:demo,source,blog post