nghiepdev / prevent-pull-refresh

[ABANDONED] Preventing the pull-to-refresh effect browser on mobile
MIT License
19 stars 2 forks source link

Pull to refresh isn't disable on iOS #1

Open shivamsupr opened 6 years ago

shivamsupr commented 6 years ago

Check the codesandbox. https://codesandbox.io/s/jp8nvvzqoy

nghiepdev commented 6 years ago

Maybe the issue on the chrome recent versions.

Jonathan002 commented 6 years ago

This doesn't seem to work with Chrome 69.0.3497.105 on iOS 11.3. I've also tried multiple other solutions and that had seemed to work before from the reactions of others but they do not work for me for this version.

Other solutions I've tried:

apptaro commented 5 years ago

we need to add { passive: false } for touch move like:

document.addEventListener('touchmove', touchmoveHandler, { passive: false });

because from some version of Chrome, event listeners are default passive true.

nghiepdev commented 5 years ago

@apptaro Thank for your support. It works! I just published the new patch version for the issue.

shivamsupr commented 5 years ago

@nghiepit It's still happening just for the initial load it doesn't happen. check this https://o1l55wryq.codesandbox.io.

To replicate: Scroll up once and then scroll down. You'll see pull-to-refresh.

apptaro commented 5 years ago

I know what's wrong. When a page is short, scrollling down (panning up) doesn't actually scroll the page, so scrolling up (panning down) will activate pull-to-refresh.

https://github.com/nghiepit/prevent-pull-refresh/blob/master/index.js#L78 here, "maybePrevent" shouldn't be set to false unless window.pageYOffset !== 0.

nghiepdev commented 5 years ago

@apptaro Did you mean?

const touchmoveHandler = event => {
    if (maybePrevent) {
      if (window.pageYOffset !== 0) {
        maybePrevent = false;
      }
      if (isScrollingUp(event)) {
        return event.preventDefault();
      }
    }
  };

With me. It's still happening, same issue @shivamsupr . Can you help me test and make a pull request?

Thank you in advance.