Javascript SlickGrid.js使用Internet Explorer切换视口可见性问题
我正在使用图书馆,它非常棒 目前唯一的主要问题是Internet Explorer(在9、10和11中确认),但符合标准的浏览器(如Chrome和FF)工作正常 问题:当网格滚动后隐藏,然后在IE中重新显示时,滚动位置重置为网格顶部,视口/数据被切断或完全隐藏(取决于滚动量) 下面是一个演示SlickGrid.js IE bug的提琴(使用作者的): 有人对此有一个通用的修复程序或是光滑网格的补丁吗 我可以调用Javascript SlickGrid.js使用Internet Explorer切换视口可见性问题,javascript,jquery,internet-explorer,slickgrid,Javascript,Jquery,Internet Explorer,Slickgrid,我正在使用图书馆,它非常棒 目前唯一的主要问题是Internet Explorer(在9、10和11中确认),但符合标准的浏览器(如Chrome和FF)工作正常 问题:当网格滚动后隐藏,然后在IE中重新显示时,滚动位置重置为网格顶部,视口/数据被切断或完全隐藏(取决于滚动量) 下面是一个演示SlickGrid.js IE bug的提琴(使用作者的): 有人对此有一个通用的修复程序或是光滑网格的补丁吗 我可以调用grid.resizeCanvas()来解决这个问题,但它会将滚动条重置为顶部,并且
grid.resizeCanvas()
来解决这个问题,但它会将滚动条重置为顶部,并且只为处理Internet Explorer而对每个网格执行此操作非常烦人
半工作修复,但仍会拧紧滚动顶部
:
函数onShowGrid1(){grid.resizeCanvas();}
(现在正在查看JS代码,但我尚未确认该漏洞是Microsoft的还是SlickGrid的)此问题适用于IE中溢出设置为滚动或自动且可见性已切换的任何元素。这里有一个简单的例子: 也就是说,如果希望保留scrollTop位置,可以扩展SlickGrid或创建一个包装器类,该类订阅onScroll事件,记录scrollTop值,并在显示或隐藏网格时在viewport元素上设置它。我在这里修改了您的示例代码作为概念证明:
如果您使用的是远程数据提供程序,则可以使用grid.onViewportChanged.notify()为更新的scrollTop触发ensureData,因此这是一个IE错误。数字。在Windows Phone 8.1 w/IE 11上也注意到了同样的问题。谢谢你的批评
var lastScrollTop;
var scrollTimeout;
function updateScrollTop(e, args){
clearTimeout(scrollTimeout);
scrollTimeout = setTimeout(function(){
lastScrollTop = args.scrollTop;
}, 30);
}
//...
grid.onScroll.subscribe(updateScrollTop);
$('body').on('click', '.toggle-button', function(){
$("#myGrid").toggle();
if(lastScrollTop !== undefined){
$("#myGrid").find('.slick-viewport').get(0).scrollTop = lastScrollTop;
}
});