防止Element.scrollIntoView()函数(其中元素位于iframe中)滚动父级

时间:2019-07-12 16:01:21

标签: javascript jquery html css iframe

我有一个具有以下功能的页面:

SELECT Id, TableEnumOrId FROM ProcessDefinition

其中oLink是页面中的元素,而elmnt是iframe的srcdoc中加载的html中的链接。

该函数的调用方式如下:

function aux_func(_this){
            let link = document.getElementById("oLink").href;
            var elmnt = _this.contentDocument.getElementById(link);
            elmnt.scrollIntoView({ behavior: "smooth", block: "center"  });
        }

{{t1}}是Django发送的一些html(我正在使用模板)。而iframe位于页面中(从现在起,将其称为父对象。)

无论如何,我要在加载框架内容时自动滚动到elmnt。但是我想防止父级被滚动。因此,我只希望iframe的滚动条移动。

任何想法该怎么做?我无法使用:

<iframe id="cFrame" srcdoc="{{t1}}" onload="aux_func(this)"></iframe>

或其他类似的属性,因为我仍然需要访问父级和iframe中的其他元素。

1 个答案:

答案 0 :(得分:0)

我知道它只是黑客,但是向下滚动iframe后又向上滚动窗口又如何。在函数末尾添加此代码:

window.scrollTo(0, 0);

这应该使iframe滚动,但是页面会跳回到顶部。如果在页面加载时加载iframe,效果很好。或者,您可以保存页面当前所在的位置,然后在滚动iframe后再滚动回该位置。