64 votes

Quels sont les inconvénients de la <button>balise? (Il semble qu'il y ait pas mal de problèmes avec ie)</button>

J'ai commencé à l'aide d'un diagnostic de feuille de style css, par exemple http://snipplr.com/view/6770/css-diagnostics--highlight-deprecated-html-with-css--more/

L'une des suggestions de règles faits saillants de la balise input avec le type de soumettre, avec la recommandation d'utiliser des <button> plus sémantique solution. C'est une nouvelle balise pour moi, les gars, vous ne vous le recommande, ou il y a des inconvénients (comme avec la compatibilité du navigateur) que vous devez courir à travers?

Edit:

Juste pour être clair, je comprends la spécification <button>, il a un début et une fin, il peut contenir divers éléments, alors que l'entrée est un singulet et ne peut pas contenir des trucs. Ce que je veux savoir, essentiellement, est de savoir si c'est cassé ou non. Donc, en dépit de n'avoir jamais utilisé avant, j'aimerais commencer à l'utiliser, je ne sais pas comment il fonctionne dans le monde réel. La première réponse ci-dessous ne semblent impliquer qu'il est rompu pour des utilisations à l'exception de l'extérieur de formes, malheureusement.

Edit:

On dirait que c'est pas la peine

Bouton tag: n'en vaut pas la peine, il suffit d'utiliser l'entrée pour l'instant.

Le bouton est essentiellement pas la peine alors que ie6 et ie7 restent en circulation, il semble être beaucoup beaucoup plus de problèmes que le léger avantage qu'il pourrait avoir été à la hauteur.

49voto

orip Points 28225

Lorsque vous utilisez <button> spécifiez toujours le type, car les navigateurs utilisent par défaut différents types.

Cela fonctionnera de manière cohérente sur tous les navigateurs:

  • <button type="submit">...</button>
  • <button type="button">...</button>

De cette façon, vous gagnez tous les bienfaits de <button> , aucun inconvénient.

17voto

slolife Points 6528

Répondre à partir d'un ASP.NET point de vue.

J'ai été très enthousiaste quand j'ai trouvé cette question et un peu de code pour un ModernButton de contrôle, ce qui, en fin de compte, est une <button> contrôle.

J'ai donc commencé à ajouter toutes sortes de ces boutons, décoré avec des <img /> balises à l'intérieur d'eux pour les faire ressortir. Et tout a très bien fonctionné... dans Firefox, et google Chrome.

Ensuite, j'ai essayé IE6 et a obtenu le "potentiellement dangereuse Demande.Formulaire de valeur a été détecté", parce que IE6 soumet le code html à l'intérieur du bouton, qui, dans mon cas, a des balises html. Je ne veux pas désactiver le validateRequest drapeau, parce que j'aime cet ajout de bits de données de validation.

Alors j'ai écrit un peu de javascript pour désactiver ce bouton avant de le soumettre a eu lieu. A très bien fonctionné dans une page de test, avec un seul bouton, mais quand je l'ai essayé sur une vraie page, qui avait d'autres <button> tags, il a fait exploser de nouveau. Parce que IE6 soumet TOUS les boutons' html. Alors maintenant, j'ai toutes sortes de code pour désactiver les boutons avant de soumettre.

Même problème avec IE7. IE8 a heureusement ce problème.

Aïe. Je vous recommande de ne pas aller en bas de cette route SI vous utilisez ASP.NET.

Mise à jour:

J'ai trouvé une bibliothèque qui semble prometteuse pour résoudre ce problème.

Si vous utilisez le ie8.js script à partir de cette bibliothèque: http://code.google.com/p/ie7-js/

Il peut fonctionner très bien. L'IE8.js apporte IE5-7 jusqu'à la vitesse avec IE8 avec le bouton de la balise. Il rend la valeur soumises à la valeur réelle et un seul bouton soumis.

13voto

David Brown Points 14365

Tout ce que vous devez savoir: W3Schools <button> Balise

La balise est prise en charge dans tous les principaux navigateurs.

Important: Si vous utilisez l'élément de bouton dans un formulaire HTML, différents navigateurs présenter des valeurs différentes. Internet Explorer va soumettre le texte entre l' <button> et </button> tags, tandis que les autres navigateurs, de présenter le contenu de l'attribut value. Utiliser l' input élément pour créer des boutons dans un formulaire HTML.

10voto

Quentin Points 325526

Pour:

  • L'affichage de l'étiquette ne doit pas être la même que la valeur envoyée. Idéal pour l'i18n et "Supprimer cette ligne"
  • Vous pouvez inclure de balisage tels que <em> et <img>

Inconvénients:

  • Certaines versions de MSIE par défaut type="button" au lieu de type="submit" de sorte que vous devez être explicite
  • Certaines versions de MSIE de traiter l'intégralité <button>s comme réussie si vous ne pouvez pas dire que l'on a cliqué dans une multi-bouton de soumission de formulaire
  • Certaines versions de MSIE va soumettre le texte à afficher à la place de la valeur réelle

9voto

Un important caprice être pris en compte: Dans un formulaire qui contient un <button/> élément, IE6 et IE7 ne sera pas envoyer le formulaire lorsque l' <button/> élément est cliqué. D'autres navigateurs, d'autre part, de soumettre le formulaire.

En revanche, aucune des navigateurs de soumettre le formulaire lors de l' <input type="button"/> ou <button type="button"/> des éléments sont cliqués. Et naturellement, tous les navigateurs soumettre le formulaire lors de l' <input type="submit"/> ou <button type="submit"/> des éléments sont cliqués.

@Orip la réponse dit, pour obtenir des réponses cohérentes présenter des comportements à travers les navigateurs, utilisez toujours de l' <button type="button" /> ou <button type="submit" /> à l'intérieur d'un <form/> élément. Ne laissez jamais l' type d'attribut.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X