2010-09-08 17 views
7

Tenía un cuadro de entrada para que los usuarios ingresen un enlace personalizado a una página desde el formulario de creación (algo similar a Wordpress). (por ejemplo, about/awards que se usa para http://site.com/pages/about/awards) En algún momento, esto dejó de funcionar en Chrome, ya que ahora hacen una validación más estricta del campo input type="url". Lo cual sería bueno pero:input type = "url" para URL relativas

  • No permite las URL relativas. about/awards es una URL relativa, pero Chrome parece rechazar todo menos las URL absolutas http://domain/page/stuff
  • La falla no es particularmente obvia. Simplemente se centra en el campo del formulario (que no es particularmente notable) y se niega a enviar el formulario. El informe que obtuve fue que el formulario "no funciona", ya que no se dieron cuenta de lo que estaba pasando, y me llevó unos minutos darme cuenta de lo que estaba pasando.

lo he arreglado con sólo cambiar de nuevo a input type = "text", pero esto anula algunas de las cosas útiles que type="url" añade (como el teclado especial en el iPhone).

¿Es esto parte de la especificación HTML5 o un problema en la implementación de Chrome?

+1

y su pregunta es ....? – GSto

+0

@GSto: Mi mal, olvidé la oración más importante. – Macha

+0

Puede anteponer la URL relativa con "http: //" en submit para que sea válida. Vea ejemplos aquí ... https: //stackoverflow.com/questions/17946960/with-html5-url-input-validation-assume-url-starts-with-http/41193579#41193579 –

Respuesta

2

Dice: "Mientras que el valor del elemento no es una URL absoluta válida, el elemento está sufriendo de una coincidencia de tipos".

2

La especificación todavía se está trabajando, pero a partir de esta cita, suena como que podría ser un problema con la aplicación de Chrome (negrita subrayado es mío):

Los agentes de usuario pueden permitir al usuario configurar el valor en una cadena que no es una URL absoluta válida , pero también pueden escapar o lugar automáticamente caracteres introducidos por el usuario para que el valor es siempre un URL absoluta válida (incluso si ese no es el valor real visto y editado b y el usuario en la interfaz). Los agentes de usuario deben permitir al usuario establecer el valor en la cadena vacía . Los agentes de usuario no deben permitir a los usuarios insertar U + 000A LINE FEED (LF) o U + 000D CARRIAGE RETURN (CR) caracteres en el valor.

Source

0

Un plausable todavía semántica solución que estoy usando es permitir que los URL relativos usando el atributo pattern:

<input required="required" type="url" pattern="(https?|/).*?" name="sStyleBackgroundImageURL" value="{!sStyleBackgroundImageURL}"></input> 
+0

Esto no funciona (Google Chrome 65.0.3325.146). – darkangel

Cuestiones relacionadas