2012-07-11 46 views
3

我目前工作的一个所见即所得的解决方案,需要一个功能与一系列正确选择一个节点(我的意思是节点本身,不仅是它的内容)如何使用webkit浏览器选择范围内的节点?

DOM LVL2显然有一个函数为这个w3.org/ranges并定义

range.selectNodeContents() // Select the contents within a node

range.selectNode() //Select a node and its contents

的问题是,当selectNode()完全与Firefox或IE9甚至工作,这似乎是不可能实现的任何WebKit浏览器(最后是Chrome和Safari)。 WebKit的两个selectNodeContents()和selectNode()只选择节点的内容(根据规格,这似乎我是一个bug)

为了使它工作,我试图模仿中selectNode()目标通过使用
range.setStartBefore(node);
range.setEndAfter(node);

但结果还是一样,它无处不在的工作(即> 8当然),但不是在WebKit浏览器..

如果您想尝试一下我做了一个小的jsfiddle与您可以玩here(只需打开控制台并查看webkit上的console.warn结果即可:/)

我搜索了很多,但我找不到一种方法来实际选择webkit浏览器上的完整节点。 通过奇迹,你们中的一些人会知道一种方法来做到这一点,甚至只是任何提示,以继续我的追求? :/

PS:我知道“瘦长”的lib,但我不能在我的项目中使用它,并从我的源读取,我甚至不能确定他们处理那件事反正:/

回答

2

问题不在于selectNode(),它在WebKit中工作正常,而是使用WebKit的选择对象,该选择对象适用于其允许选择边界和插入位置的位置的自己的(并非总是不合理的)想法。有起诉这与WebKit的错误:

你是对的,四肢瘦长不解决这个问题,而宁愿以反映浏览器的原生选择的现实。假装选择不同会很快导致奇怪的行为。

+0

非常感谢您的回答,即使它终于为我解决了任何问题,最终确认了我的想法。由于该错误报告从2007年我猜它不会移动..我必须找到另一个解决方案。 (当你在那里时,thx也是为了你的工作而使用的) – vor 2012-07-12 13:01:24

相关问题