繁体   English   中英

使用Angular-bootstrap模式和窗口位置时,如何防止页面滚动到顶部:已修复ipad的解决方法?

[英]How to prevent page scroll to top when using Angular-bootstrap modal and window position:fixed workaround for ipad?

您可能知道,某些设备上的引导程序模式存在错误,模式列表后面的页面滚动而不是模式页面( http://getbootstrap.com/getting-started/#support-fixed-position-keyboards

可以通过添加css-rule .modal-open { position: fixed; } .modal-open { position: fixed; }

但是此修复程序会产生另一个错误-当您打开模式窗口时,页面会滚动到顶部。 可以通过JS来解决,例如通过以下方式: https : //stackoverflow.com/a/34754029/2244262

但是我使用angular-bootstrap包,它将packagestrap jquery事件替换为promises 因此,我不知道如何为显示/隐藏事件的所有模态定义全局处理程序。 我的代码中有太多模态,并且我不想在每个模态调用中定义这些处理程序,这太脏了。

关于如何解决我所遇到的最主要问题的任何想法?

也许您可以那样做。 当模式关闭时,关闭功能起作用。 这可以防止模式关闭时页面向上滚动。

ngOnInit(): void {
 document.body.style.position = 'initial';
 document.body.style.top = `-${window.scrollY}px`;
 ...
}

close(result?: any): void {
 this.activeModal.close(result || {});

 const scrollY = document.body.style.top;
 document.body.style.position = '';
 document.body.style.top = '';
 window.scrollTo(0, parseInt(scrollY || '0') * -1);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM