Je comprends les raisons de sécurité du DIS-Permettre à JS Copie de texte arbitraire dans le presse-papiers, mais y a-t-il une méthode par laquelle cliquer sur un bouton peut sélectionner le texte dans un pré-noeud-nœud similaire à la manière dont la fonction SELECT () fonctionne dans une entrée. ? p>
Je ne cherche pas le plugin JQuery qui copie au presse-papier. Je veux juste envoyer un texto dans Pre Block pour être mis en surbrillance afin que l'utilisateur puisse Ctrl-C pour copier. P>
Je semble trouver un squat. p>
6 Réponses :
Autant que je sache, vous ne pouvez pas sélectionner de texte extérieur
La raison est que le code source en surbrillance de la syntaxe affichée dans un bloc avant. Oui, l'utilisateur peut la mettre en surbrillance et les copier eux-mêmes, mais cela implique de déplacer la souris pour commencer et cliquer jusqu'à la fin, et peut entraîner une frustration si elles traînent trop loin ou non assez loin, etc. Ainsi, en fournissant un bouton qui fournit une touche qui fournit la sélection Pour eux, il leur est plus facile de copier un exemple de code.
Vous pouvez sélectionner le texte en dehors de
Désolé de donner mauvaise réponse. Selon le lien de Tim, vous pouvez utiliser la méthode: window.getselection (). SelectallChildren (document.getelementb yid ('elem_id')); code> pense que ça ne fonctionne que dans FF.
Regardez sur p>
https://developer.mozilla.org/it/dom/window.getselection < / a> p>
Il n'est pas compatible avec tous les navigateurs de maire, d'abord, c'est-à-dire que la mise en œuvre est la version 9 p>
Mais chez les plus âgés, il existe une API alternative dans le document.Selection, qui semble équivalent p>
http://msdn.microsoft. COM / EN-US / Bibliothèque / MS535869% 28V = VS.85% 29.aspx P>
bonne chance! p>
Peut-être que vous pourriez changer la balise jsfiddle: http://jsfiddle.net/wzbqf/ fort> p> et le JavaScript (jQuery) code: p> pré code> dans une balise code> textarea code> lorsque l'utilisateur clique sur elle:
J'ai eu une solution pour travailler en fonction de cela, bien que mis en œuvre différemment. Je vais le poster une fois que je suis autorisé.
OK - c'est ce que je fais en basé sur la suggestion de Jsfiddle et ça marche. Seul problème est que je n'ai pas de fenêtres et dans IE, c'est-à-dire que je dispose de la copie dans le presse-papiers, apparemment, les pauses de ligne sont cassées, mais ce n'est pas cette question (et je soupçonne un .replace () peut le corriger - j'ai juste besoin d'accéder à Windows à jouer avec IE): La raison pour laquelle je n'utilise pas .Hide () où je cache le bloc avant est parce que .Hide () Ajoute un attribut de style interdit sous le Politique Mozilla CSP Le serveur utilise, je dois donc définir un attribut de classe. P> p>
Il convient de noter que mon code s'appuie sur le pré-nœud ayant le code de données d'attribut et (démarrage de Pre JS de toute façon) étant le seul enfant d'un noeud parent div.
Ce n'est pas trop difficile. Vous avez besoin de branches séparées pour IE <9 et tous les autres navigateurs. Voici une fonction pour sélectionner le contenu d'un élément:
C'est ce dont vous avez besoin: et le HTML: p> ou si vous voulez faire ceci programmatiquement: p> ou en jQuery: p> Vous ne pouvez pas passer le clip d'élément jQuery () comme argument el. Il donnera "TypeError: argument 1 de plage.SelectNodeconTons ne met pas en œuvre le nœud d'interface." P> p>