1

我正在使用 rangy 选择 IFrame 选择中的文本,但有时我需要滚动 IFrame 才能查看此选择。是否可以自动将 IFrame 滚动到选定的文本?

4

1 回答 1

3

您可以使用scrollIntoView()包含选择的锚节点的元素的方法,但这可能会滚动主文档以及 iframe,并且如果选择从几行开始进入文本节点,也可能是不精确的。

var sel = rangy.getSelection();
var anchorNode = sel.anchorNode;
if (anchorNode) {
    if (anchorNode.nodeType != 1) {
        anchorNode = anchorNode.parentNode;
    }
    anchorNode.scrollIntoView();
}

更好的选择可能是使用选择范围的边界矩形,可通过getBoundingClientRect()大多数现代浏览器中的范围方法获得,并手动滚动 iframe 的文档。但是,这并不是普遍支持的,并且是相对于视口而不是文档而言的。这是一个相关的问题和答案:

https://stackoverflow.com/a/6847328/96100

于 2012-06-23T17:16:27.863 回答