【问题标题】:reliable, cross-browser way to get selection's boundaries?获得选择边界的可靠、跨浏览器的方法?
【发布时间】:2011-05-15 19:30:59
【问题描述】:

我需要让用户能够选择一些文本,单击一个按钮并让服务器下次记住选择。

我已经广泛阅读了 SO 的问题和答案,尝试了一些库,但没有运气:还没有找到可靠的工具。

如何识别选择的边界并不重要:它可以是“nth textNode, mth char”或“nth char of text”或“nth char of html”等,只要它允许服务器识别文档中的点;真正重要的是,在同一文档中选择相同的单词必须在 chrome、safari、IE、firefox 上给出相同的结果。

编辑:我不需要它在互联网上的任何地方都可以工作:只在一个站点上,文档的结构是固定的,只有单个 div(或类似)的内容会改变。

【问题讨论】:

    标签: javascript textselection


    【解决方案1】:

    试试我的Rangy 库和它的Serializer module。我不相信这正是您想要的,因为您提到服务器会记住选择,而我的建议使用 cookie,并且序列化选择会因浏览器而异。但是,它确实如您在第一段中描述的那样。

    另一方面,编写适用于所有浏览器和所有页面的东西几乎是不可能的,因为浏览器以不同方式解释 HTML 并构建不同的 DOM。

    【讨论】:

    • 我已经尝试过 Rangy,但它似乎无法在 chrome 上正常工作;我也无法在 IE 和 firefox 上获得相同的数字...
    • 不,您在 IE 和 Firefox 上得到的数字不同,因为 IE 的 DOM 不同(主要是因为 IE 过滤掉了空白文本节点)。我确实考虑过尝试在所有浏览器中强制使用相同的数字,但认为有太多可能失败的方式。如果 Chrome 有问题,我还没有看到。以下测试页面适用于 Chrome:timdown.co.uk/rangy/test/serializer.html
    • 我刚刚提交了一个关于 Chrome 的问题 (code.google.com/p/rangy/issues/detail?id=20)。
    • @giorgian:谢谢,我会尽快调查。
    • @giorgian:演示页面上有一个小问题,与库无关。我在问题页面上回复了。
    猜你喜欢
    • 1970-01-01
    • 2011-05-02
    • 2012-03-26
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多