html - Ako nastaviť tlačidlo tak, aby sa na mobile aktivovalo len dvojitým ťuknutím, ale na počítači jediným kliknutím?


Mám tlačidlo, ktoré spúšťa funkciu v javascripte. Toto tlačidlo musí:

  • spustí sa, ak naň kliknete raz (ale iba na desktopových prehliadačoch)
  • spustí sa, ak ho ťuknete dvakrát, ale nie raz (len na mobilných prehliadačoch)

Je to možné dosiahnuť pomocou HTML? Používam Angular 7.

Skúsil som zistiť, či sa používa mobilný prehliadač, a použiť jednoduché „if“ v TypeScripte (Angular) na spracovanie kliknutia. To však nefungovalo, takže existuje spôsob, ako to urobiť pomocou HTML/CSS?

//Pseudo code:
if (browser == mobile) {
    register only double tap;
    don't register single click;
}
else if (browser == desktop) {
    register only single click;
    register double click/tap as 2 separate clicks of button;
}


//HTML Button I'm using (this is in Angular 7):
<button id="{{variable}}" (click)="myFunction(param1, param2)" name="on"> 
{{variable}}</button>

Odpoveď č. 1

jednoducho môžete použiť click a dblclick na vyvolanie metód na základe akcie myši používateľa

Použil som túto metódu na zistenie mobilného alebo počítačového prehliadača 👇

export function isMobileBrowser() { 
 if( navigator.userAgent.match(/Android/i)
 || navigator.userAgent.match(/webOS/i)
 || navigator.userAgent.match(/iPhone/i)
 || navigator.userAgent.match(/iPad/i)
 || navigator.userAgent.match(/iPod/i)
 || navigator.userAgent.match(/BlackBerry/i)
 || navigator.userAgent.match(/Windows Phone/i)
 ){
    return true;
  }
 else {
    return false;
  }
}

komponent 🌠

  clickHandler(){
    if (!isMobileBrowser()) {
    console.log('Hello from 💻');
    this.name = "💻";

    }
  }

  dblclickHandler() {
    if (isMobileBrowser()) {
    console.log('Hello from 📱');
    this.name = "📱";
    }
  }

šablóna 📜

<button (click)="clickHandler()" (dblclick)="dblclickHandler()">Log a message 🔥</button>

demo 🚀🚀, skontrolujte to na mobile pomocou tohto odkazu