Javascript 滚动iframe至所选文本

Javascript 滚动iframe至所选文本,javascript,rangy,Javascript,Rangy,我正在使用rangy在IFrame选择中选择文本,但有时我需要滚动IFrame以查看此选择是否可以自动将IFrame滚动到所选文本?您可以使用包含选择的锚节点的元素的scrollIntoView()方法,但这可能会滚动主文档和IFrame,如果选择在文本节点中开始几行,也可能不准确,比如说 var sel = rangy.getSelection(); var anchorNode = sel.anchorNode; if (anchorNode) { if (anchorNode.no

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

您可以使用包含选择的锚节点的元素的
scrollIntoView()
方法,但这可能会滚动主文档和IFrame,如果选择在文本节点中开始几行,也可能不准确,比如说

var sel = rangy.getSelection();
var anchorNode = sel.anchorNode;
if (anchorNode) {
    if (anchorNode.nodeType != 1) {
        anchorNode = anchorNode.parentNode;
    }
    anchorNode.scrollIntoView();
}
更好的选择可能是使用选择范围的边框(在大多数现代浏览器中通过范围的方法提供),并手动滚动iframe的文档。但是,这并不是普遍支持的,它是相对于视口而不是文档的。这里有一个相关的问题和答案: