2009-12-14 3 views
18

J'essaie de le rendre facile pour un utilisateur de l'iPhone pour copier du texte dans le presse-papiers dans un safari mobile. Comme dans le "touch-hold-copy" habituel. Il y a un morceau spécifique de texte que je veux qu'un utilisateur copie. J'ai le choix complet du balisage html dans lequel emballer le texte. Comment puis-je le rendre facile, plutôt qu'abitrary? Par exemple:Sélection de texte dans Safari mobile sur iPhone

  • Existe-t-il un moyen de "sélectionner tout" le texte lors de la mise à jour en utilisant javascript? Ensuite, un utilisateur pourrait simplement continuer à appuyer sur la touche, puis choisir la copie?

  • Existe-t-il un moyen d'afficher l'option "Sélectionner tout"? Comme vous pouvez en tapant dans une zone de texte? Après quoi ils peuvent choisir la copie?

  • S'il n'y a pas de solution javascript, comment puis-je organiser le code HTML pour aider Safari à sélectionner le bon morceau de texte facilement? Par opposition à juste un mot, ou un div d'emballage?

J'ai essayé onFocus = "this.select()" pour divers éléments, aucun ne semble fonctionner. Aussi essayé onClick.

Ceux qui ont essayé de porter un site utilisant ZeroClipboard sur l'iPhone pourraient avoir des idées.

Vive

+0

Je tentais pour la même fonction dans mon application iPhone. Quiconque a des doutes sur la fonctionnalité peut le voir dans l'application iPhone "Opera". –

+0

Avant que le copier/coller ne soit introduit sur iOS, il y avait un signet de script java nommé pastebud. Voici la vidéo youtube du script java en action http://www.youtube.com/watch?v=_ybh573ZASc Le site http://www.pastebud.com/ ne fonctionne pas depuis que Apple a introduit la copie/coller dans iOS. N'importe qui avec ce script java peut nous aider. –

Répondre

2

J'ai rencontré le même problème. L'événement onfocus est le bon pour piéger (ontouchstart n'est pas déclenché si vous utilisez les boutons du clavier de l'iphone [suivant]/[prev].) Si vous mettez une alerte(); dans votre gestionnaire onfocus = "", vous verrez apparaître la boîte d'alerte. Le problème est this.select(); Je n'ai toujours pas trouvé de réponse à cela, mais quand/si je le fais, je l'afficherai ici.

+0

J'ai eu le même problème. l'accent est le bon événement à piéger, définitivement. Je pense que pour une amélioration mineure de l'utilisabilité comme celle-ci, je suis en train de craquer pour un safari mobile cassé et de les laisser réparer. – SimplGy

9

au lieu de this.select(); J'ai utilisé ce qui suit et cela a fonctionné!

this.selectionStart=0; 
this.selectionEnd=this.value.length; 
+0

Cela a fonctionné pour moi sur mon iPhone 3GS - iOS 4.3 – Mark

+0

Fonctionne toujours avec iOS 7 sur un iPhone 5! – mygzi

7

La sauce magique pour moi était la combinaison de ces trois:

onFocus="this.selectionStart=0; this.selectionEnd=this.value.length;" <!-- for big screens --> 

onTouchEnd="this.selectionStart=0; this.selectionEnd=this.value.length;" <!-- for small screens --> 

onMouseUp="return false" <!-- to stop the jitters --> 
+0

Cela a fonctionné pour moi avec onClick au lieu de onFocus/onTouchEnd. onMouseUp était important – netzaffin

Questions connexes