【发布时间】:2012-07-11 02:06:06
【问题描述】:
我目前正在研究 WYSIWYG 解决方案,需要一个函数来正确选择一个节点的范围(我指的是节点本身,而不仅仅是它的内容)
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() 都只选择节点内容(根据规范,这在我看来是一个错误)
为了使它工作,我尝试使用 range.setStartBefore(node);
range.setEndAfter(node);
来模拟 selectNode() 目标
但结果还是一样,它在任何地方都可以工作(当然是>8),但不能在 webkit 浏览器上工作..
如果你想尝试一下,我做了一个小 jsfiddle,你可以用它玩 here(只需打开控制台并查看 console.warn 结果,这在 webkit 上是不一样的:/)
我搜索了很多,但找不到在 webkit 浏览器上实际选择完整节点的方法。 奇迹般地,你们中的一些人会知道一种方法,甚至只是任何提示来继续我的探索吗? :/
ps:我知道“rangy”库,但我不能在我的项目中使用它,而且从我在源代码中读到的内容来看,我什至不确定他们是否处理那个东西:/
【问题讨论】:
标签: javascript webkit range contenteditable