56 votos

¿Qué desventajas hay al <button> la etiqueta? (Parece que hay bastantes problemas con ie)

Empecé a usar un diagnóstico de la hoja de estilo css, por ejemplo, http://snipplr.com/view/6770/css-diagnostics--highlight-deprecated-html-with-css--more/

Una de las propuestas de normas destaca la entrada de las etiquetas con el tipo submit, con la recomendación de uso <button> como más semántica solución. Esta es una etiqueta nueva para mí, qué les recomendaría, o hay desventajas (como con la compatibilidad del navegador) que ha ejecutado a través de?

Edición:

Sólo para ser claro, entiendo que la especificación de <button>, tiene un inicio definido y un final, que puede contener diferentes elementos, considerando que de entrada es un singlete y no puede contener cosas. Lo que quiero saber es esencialmente si está roto o no. Así que a pesar de nunca haber usado antes, me encantaría empezar a usarlo, simplemente no sé cómo de bien funciona en el mundo real. La primera respuesta de abajo parece implicar que es roto por los usos excepto fuera de las formas, por desgracia.

Edición:

Parece que no vale la pena

Botón de etiqueta: no vale la pena, solo utilizar la entrada por ahora.

El botón es esencialmente no vale la pena, mientras que ie6 y ie7 siguen en circulación, parece ser mucho más difícil que el menor beneficio que podría haber sido la pena.

42voto

orip Puntos 28225

Cuando se utiliza <button> siempre especificar el tipo, ya que los navegadores por defecto para los diferentes tipos.

Esto funcionará de manera consistente a través de todas las navegador:

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

De esta manera se obtienen todos de <button>'s de la bondad, no hay inconvenientes.

17voto

slolife Puntos 6528

Responder de una ASP.NET la perspectiva.

Yo estaba muy emocionado cuando me enteré de esta pregunta y algo de código para un ModernButton de control, que, al final, es un <button> de control.

Así que empecé a añadir todo tipo de estos botones, decorado con <img /> etiquetas en el interior de ellos para hacer que se destacan. Y todo funcionaba de maravilla... en Firefox y Chrome.

Entonces traté de IE6 y tiene la "potencialmente peligroso Solicitud.Formulario de valor fue detectado", porque IE6 envía el html dentro del botón, que, en mi caso, ha etiquetas html. No quiero deshabilitar la validateRequest bandera, porque me gusta este añadido bit de validación de datos.

Así que escribí algunas javascript para deshabilitar el botón antes de que el presentar ocurrido. Trabajó mucho en una página de prueba, con un botón, pero cuando lo probé en una página real, que tenía otros <button> etiquetas, sopló de nuevo. Porque IE6 se somete a TODOS los botones' html. Así que ahora tengo todo tipo de código para deshabilitar los botones antes de enviar.

Mismos problemas con IE7. IE8 por suerte tiene este fijo.

Uff. Yo recomiendo no ir por este camino SI usted está usando ASP.NET.

Actualización:

He encontrado una biblioteca por ahí que parece prometedor para solucionar este problema.

Si usted utiliza el ie8.js secuencia de comandos de esta biblioteca: http://code.google.com/p/ie7-js/

Podría funcionar bien. El IE8.js trae IE5-7 a la velocidad con IE8 con el botón de la etiqueta. Esto hace que el valor enviado al valor real y solo un botón se envía.

11voto

David Brown Puntos 14365

Todo lo que necesitas saber: W3Schools <button> Tag

La etiqueta es compatible con todos los principales navegadores.

Importante: Si utiliza el elemento de botón en un formulario HTML, navegadores diferentes presentará diferentes valores. Internet Explorer presentará el texto entre las <button> y </button> etiquetas, mientras que otros navegadores presentará el contenido del atributo value. El uso de la input elemento para crear botones en un formulario HTML.

10voto

Quentin Puntos 325526

Pros:

  • La visualización de la etiqueta no tiene que ser el mismo que el valor enviado. Ideal para i18n y "Eliminar esta fila"
  • Puede incluir marcado como <em> y <img>

Contras:

  • Algunas versiones de MSIE predeterminado a type="button" en lugar de type="submit" así que tienes que ser explícito
  • Algunas versiones de MSIE tratará <button>s como exitoso, así que no pueden decir que uno se ha hecho clic en un multi-botón de enviar formulario
  • Algunas versiones de MSIE presentará el texto para mostrar en lugar del valor real

9voto

Una importante peculiaridad a tener en cuenta: En un formulario que contiene un <button/> elemento, IE6 y IE7 no enviar el formulario cuando la <button/> elemento que se hace clic. Otros navegadores, por otro lado, va a enviar el formulario.

En contraste, no de los navegadores de enviar el formulario cuando <input type="button"/> o <button type="button"/> elementos se hace clic. Y, naturalmente, todos los navegadores presentará el formulario cuando <input type="submit"/> o <button type="submit"/> elementos se hace clic.

Como @orip de la respuesta, dice, para obtener consistente presentar comportamiento en todos los navegadores, siempre uso <button type="button" /> o <button type="submit" /> dentro de un <form/> elemento. Nunca deje la type de atributo.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X