shipshapecode / tether

A positioning engine to make overlays, tooltips and dropdowns better
https://tetherjs.dev/docs/welcome
MIT License
8.5k stars 747 forks source link

[iOS] click delay on mobile devices with content in iframe #289

Open Sebsta13 opened 6 years ago

Sebsta13 commented 6 years ago

Hi,

I found a weird issue while using tether in combination with content in iFrames.

If you have clickable content in iFrames and are using an iPhone, the click event don't trigger because the binding of the touchmove event:

if (typeof window !== 'undefined' && typeof window.addEventListener !== 'undefined') {
    ['resize', 'scroll', 'touchmove'].forEach(function (event) {
      window.addEventListener(event, tick);
    });
  }

You need to hold at least 250ms on the button to execute the event because of this:

if (typeof lastDuration !== 'undefined' && lastDuration > 16) {
      // We voluntarily throttle ourselves if we can't manage 60fps
      lastDuration = Math.min(lastDuration - 16, 250);

      // Just in case this is the last event, remember to position just once more
      pendingTimeout = setTimeout(tick, 250); // this is the problem
      return;
    }

Could someone please look into this?

Best regards

RobbieTheWagner commented 5 years ago

@Strean1337 is this still an issue?