我正在使用 rangy 选择 IFrame 选择中的文本,但有时我需要滚动 IFrame 才能查看此选择。是否可以自动将 IFrame 滚动到选定的文本?
问问题
1108 次
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 的文档。但是,这并不是普遍支持的,并且是相对于视口而不是文档而言的。这是一个相关的问题和答案:
于 2012-06-23T17:16:27.863 回答