代码之家  ›  专栏  ›  技术社区  ›  user2828442

document.scrolltop在爱奥尼亚中为0

  •  1
  • user2828442  · 技术社区  · 6 年前

    当我滚动我的页面并点击时,我得到它 Y位 从顶部开始,当我滚动时,它在HTML和JS中不断增加。

    但当我试图在爱奥尼亚实现同样的目标时,它总是回来的。 .

    为了更清楚地了解这一点 1 minute video .

    下面是我的工作JSfiddle代码,链接到我的 jsfiddle ,滚动并单击,您将看到带有Y位置值的警报。

           $("body").click(function(){
           var scrollPost = $(document).scrollTop();
           alert(scrollPost);
           })
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="conta"></div>
      The world is your oyster.
      test<br/><br/><br/><br/>kjh<br/>kjgh<br/>uitz<br/><br/><br/><br/>uztjhg<br/>kjh<br/>
      test<br/><br/><br/><br/>kjh<br/>kjgh<br/>uitz<br/><br/><br/><br/>uztjhg<br/>kjh<br/>test<br/><br/><br/><br/>kjh<br/>kjgh<br/>uitz<br/><br/><br/><br/>uztjhg<br/>kjh<br/>test<br/><br/><br/><br/>kjh<br/>kjgh<br/>uitz<br/><br/><br/><br/>uztjhg<br/>kjh<br/>test<br/><br/><br/><br/>kjh<br/>kjgh<br/>uitz<br/><br/><br/><br/>uztjhg<br/>kjh<br/>test<br/><br/><br/><br/>kjh<br/>kjgh<br/>uitz<br/><br/><br/><br/>uztjhg<br/>kjh<br/>test<br/><br/><br/><br/>kjh<br/>kjgh<br/>uitz<br/><br/><br/><br/>uztjhg<br/>kjh<br/>test<br/><br/><br/><br/>kjh<br/>kjgh<br/>uitz<br/><br/><br/><br/>uztjhg<br/>kjh<br/>
      <div class="test">Thats a test</div>

    我怎样才能在离子中达到同样的效果,这不管用。这是我的 Stackblitz link .

    2 回复  |  直到 6 年前
        1
  •  1
  •   Gabriel Barreto    6 年前

    首先,您不应该将jquery与angular一起使用,它们做的是相同的事情,因此两者都没有用处,jquery所做的一切angular都可以。所以不建议这样做。所以除非它是非常需要的,否则不要使用。

    你不能观察到你的 scrollTop 属性,因为它不移动 body ,但它正在将内容标记移到其中。有一个 content component 您可以使用其来获取此属性。这样做:

    你的页面

    import { Component, ViewChild } from '@angular/core';
    import { Content } from 'ionic-angular';
    
    @Component({...})
    export class MyPage{
      @ViewChild(Content) content: Content;
      public scrollPost: number = 0;
    
      getScrollTop() {
        this.scrollPost = this.content.scrollTop;
      }
    }
    

    您的HTML:

    <ion-content (ionScroll)="getScrollTop()">
      <!-- your page content -->
    </ion-content>
    

    有了这个,你将永远改变 scrollPost 当值滚动时,但是如果您需要在任何地方单击使用该值,不要只在 ion-content 或者点击它里面的任何元素都不起作用,而是使用一个按钮或者在里面做你需要做的事情。 getScrollTop 方法。

    希望这有帮助。

        2
  •  0
  •   Peter Varadi    6 年前

    使用爱奥尼亚时,不会滚动整个文档。 你应该用class检查元素的滚动位置 scroll-content .

    console.log(document.querySelector('.scroll-content').scrollTop);
    

    有些情况下,当你有多个 滚动内容 ,因此您可以像这样迭代它们:

    const scrollContents = document.querySelectorAll('.scroll-content');
    for (let i = 0; i < scrollContents.length; ++i) {
        console.log(scrollContents.length[i].scrollTop);
        // do something
    }