Javascript 修复带有可滚动div的Safari offsetTop
我有一个可滚动的div,里面有一组元素。当我使用Javascript 修复带有可滚动div的Safari offsetTop,javascript,angular,Javascript,Angular,我有一个可滚动的div,里面有一组元素。当我使用element.offsetTop时,我在Safari和Chrome/Firefox中得到了不同的长度 我用的是angular 2 AfterContentInit钩子 ngAfterViewChecked() { this.ticketsService.getData().subscribe(() => { this.zone.onMicrotaskEmpty.first().subscribe(() => {
element.offsetTop
时,我在Safari和Chrome/Firefox中得到了不同的长度
我用的是angular 2 AfterContentInit钩子
ngAfterViewChecked() {
this.ticketsService.getData().subscribe(() => {
this.zone.onMicrotaskEmpty.first().subscribe(() => {
let scrollPosition = calculateElementHeight(this.tickets.toArray()[1].nativeElement);
console.log(scrollPosition);
this.scrollable.setScrollPosition(scrollPosition);
});
});
}
狩猎日志:137 x2,137,92 x2,92 x2
Chrome/Firefox日志:92 x2,92 x2,92
我怎样才能修好它
PD:jQuery解决方案无效
PD2:我可以使用AfterViewChecked,因为当用户使用滚动条时,这个滚动条应该有效,所以事件应该停止。这就是问题所在,我不知道该如何停止此事件。如果在AngularJS中完成,请尝试收听以下内容: 或: 或角度2:
ngAfterViewInit() {
this.ticketsService.getData().subscribe(() => {
this.zone.onMicrotaskEmpty.first().subscribe(() => {
let scrollPosition = calculateElementHeight(this.tickets.toArray()[1].nativeElement);
console.log(scrollPosition);
this.scrollable.setScrollPosition(scrollPosition);
});
});
}
这不是问题所在,我在Angular 2 AfterContentChecked事件上执行此操作,我绝对确定已设置属性。您可以在问题中告诉我这是在AngularJS中完成的,而不是否决答案。)不,我用的是Angular 2,这个可以用。XD对angular 2不是100%确定,但请尝试而不是AfterContentChecked()尝试NgaAfterViewInit()
$scope.$watch('$viewContentLoaded', function()
{
alert("blah");
});
ngAfterViewInit() {
this.ticketsService.getData().subscribe(() => {
this.zone.onMicrotaskEmpty.first().subscribe(() => {
let scrollPosition = calculateElementHeight(this.tickets.toArray()[1].nativeElement);
console.log(scrollPosition);
this.scrollable.setScrollPosition(scrollPosition);
});
});
}