OnClick ne fonctionne pas dans React JS sur mobile
P粉342101652
P粉342101652 2023-08-18 11:58:16
0
1
516
<p>Lors de la vérification de la signature (voir vidéo de démonstration), onClick ne déclenche pas la fonction onSet() sur tablette/mobile, mais fonctionne sur ordinateur. Sur tablette/mobile, onClick ne fonctionne qu'en dehors du bouton. </p> <p>Je souhaite qu'onClick déclenche la fonction sur les tablettes/appareils mobiles. </p> <p>Vidéo de démonstration : https://streamable.com/lujzg0</p> <p>Projet : https://hh8n2j.csb.app/ (bac à sable)</p> <p><strong>DraggableSignature : </strong> <pre class="brush:js;toolbar:false;"> //DraggableSignature.js importer Draggable depuis "react-draggable" ; importer { FaCheck, FaTimes } depuis "react-icons/fa" ; importer { errorColor, goodColor, Primary45 } depuis "../utils/colors" ; exporter la fonction par défaut DraggableSignature({ url, onEnd, onSet, onCancel }) { styles const = { récipient: { position : "absolue", zIndice : 100 000, bordure : `2px solid ${primary45}`, }, contrôles: { position : "absolue", à droite : 0, affichage : "bloc-en-ligne", Couleur d'arrière-plan : primaire45, // borderRadius : 4, }, petitBouton : { affichage : "bloc-en-ligne", curseur : "pointeur", rembourrage : 4, }, } ; retour ( <Déplaçable onStop={onEnd}> <div style={styles.container}> <div style={styles.controls}> <button style={styles.smallbutton} onClick={onSet}> <FaCheck color={goodColor} /> </bouton> <button style={styles.smallbutton} onClick={onCancel}> <FaTimes color={errorColor} /> </bouton> </div> <img alt="signature" src={url} largeur={200} style={styles.img} déplaçable={false} /> </div> </Déplaçable> ); }</pré> <strong>App.js:</strong><p><br /></p> <pre class="brush:js;toolbar:false;">{signatureURL ? ( <DraggableSignature url={signatureURL} onCancel={() => { setSignatureURL(null); }} onSet={async () => { const { originalHeight, originalWidth } = pageDetails ; échelle constante = originalWidth / documentRef.current.clientWidth ; const y = documentRef.current.clientHeight - (position.y - position.offsetY + 64 - documentRef.current.offsetTop); const x = position.x - 160 - position.offsetX - documentRef.current.offsetLeft; // nouveau XY par rapport à la taille réelle du document const nouveauY = (y * originalHeight) / documentRef.current.clientHeight; const nouveauX = (x * originalWidth) / documentRef.current.clientWidth ; const pdfDoc = attendre PDFDocument.load(pdf); const pages = pdfDoc.getPages(); const firstPage = pages[pageNum]; const pngImage = wait pdfDoc.embedPng(signatureURL); const pngDims = pngImage.scale(échelle * 0,3); firstPage.drawImage(pngImage, { x : nouveauX, y : nouveauY, largeur : pngDims.width, hauteur : pngDims.hauteur, }); si (date automatique) { firstPage.drawText( `Signé électroniquement le :${dayjs().format( "JJ/MM/AAAA à HH:mm:ss" )}`, { x : nouveauX, y : nouveauY - 10, taille: 14 * échelle, couleur : RVB (0,074, 0,545, 0,262), } ); } const pdfBytes = attendre pdfDoc.save(); const blob = nouveau Blob([newUint8Array(pdfBytes)]); const URL = attendre blobToURL(blob); setPdf(URL); setPosition(null); setSignatureURL(null); }} onEnd={setPosition} /> ) : nul}≪/pré> <p>Merci</p> <p>J'ai changé onClick en onTouchtart, j'ai changé la position du bouton, j'ai utilisé une autre bibliothèque CSS. </p>
P粉342101652
P粉342101652

répondre à tous(1)
P粉327903045

Essayez d'ajouter l'événement onTouchStart et changez le bouton en composant div et stylisez-le en style de bouton

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal