La página de la que no se vuelve
La página de quejas de la Comisión Nacional de los Mercados y la Competencia está programada para que el botón de volver atrás no saque de ella. Lo hace un fichero de trece líneas cuyo único trabajo es ese, y en nuestra prueba, pulsando atrás, no había manera de salir. De las 5.064 páginas que guardamos del sitio, solo la de quejas, en castellano y en inglés, carga ese fichero.
- Dominio
- www.cnmc.es
- Guardado
- 31 AGO 2026
- Citas
- 5 en 2 ficheros guardados
- Lectura
- unos 4 min

La página empieza por lo más sensato que puede preguntar un formulario de quejas: si lo que va a escribir usted quiere que cuente oficialmente. La pregunta, literal: “¿Quieres que tenga consideración oficial y tenga respuesta obligatoria?”. Y debajo, tres opciones para marcar: «Sí quiero», «No hace falta» y «Accesibilidad de la web». La tercera no contesta a la pregunta, es un asunto y no un sí o un no, pero ahí está, en la misma lista que las otras dos, encima del botón de enviar.

El botón de volver atrás es de las piezas más viejas del navegador, y pertenece al programa con el que uno mira, no al sitio que está mirando. Sirve para salir de donde uno no quería entrar, para releer lo anterior, para deshacer un clic. Es la salida de emergencia de quien se pierde, porque es el gesto que no rompe nada.
En esta página no funciona. Lo impide un fichero de 331 bytes y trece líneas de JavaScript, el lenguaje de los programas que corren en el navegador, llamado webform.form.disable_back.js. La página lo carga en su cabecera, antes de pintar nada, y el fichero no disimula: su comentario de presentación dice «JavaScript to disable back button». JavaScript para desactivar el botón de atrás. Lo que hace cabe en dos gestos. Trece líneas, y ninguna de sobra.
- Copia
- archivo
- Guardado
- 31 ago 2026
- Peso
- 331 B
- sha256
- 5af893ba27ac…
| 1 | /** |
| 2 | * @file |
| 3 | * JavaScript to disable back button. |
| 4 | */ |
| 5 | |
| 6 | (function () { |
| 7 | // From: http:// |
| 8 | history.pushState({page: 1}, 'Title 1', '#no-back'); |
| 9 | window.onhashchange = function (event) { |
| 10 | window.location.hash = 'no-back'; |
| 11 | }; |
| 12 | |
| 13 | })(); |
El primero: nada más cargar, añade al historial del navegador una entrada nueva que apunta a la misma página con una coletilla detrás, #no-back. El segundo: se queda escuchando, y cada vez que esa coletilla cambia, que es lo que ocurre al pulsar atrás, la vuelve a poner. El visitante pulsa para salir, el historial retrocede un paso y el programa lo devuelve al sitio antes de que se note.
- Copia
- archivo
- Guardado
- 31 ago 2026
- Peso
- 331 B
- sha256
- 5af893ba27ac…
| 1 | /** |
| 2 | * @file |
| 3 | * JavaScript to disable back button. |
| 4 | */ |
| 5 | |
| 6 | (function () { |
| 7 | // From: http:// |
| 8 | history.pushState({page: 1}, 'Title 1', '#no-back'2); |
| 9 | window.onhashchange = function (event) { |
| 10 | window.location.hash3 = 'no-back'; |
| 11 | }; |
| 12 | |
| 13 | })(); |
No lo dedujimos: lo ejecutamos. Montamos en nuestra máquina dos páginas, una detrás de otra, y en la segunda pusimos este fichero tal como lo sirve la CNMC, sin tocarle una letra. Fuimos de la primera a la segunda y pulsamos atrás tres veces seguidas. Las tres veces seguíamos en la segunda, con su coletilla puesta. La página anterior estaba en el historial, a un paso, y no se llegaba a ella.
El fichero cuenta además de dónde viene. Encima de la línea que empuja la entrada al historial hay un comentario con una dirección de Stack Overflow, el sitio donde los programadores se preguntan cosas unos a otros, y la dirección lleva el título de la pregunta escrito dentro: cómo impedir que el usuario refresque y vaya atrás o adelante en cualquier navegador. Según ese comentario, de ahí sale el código que corre en la página de un organismo público.
- Copia
- archivo
- Guardado
- 31 ago 2026
- Peso
- 331 B
- sha256
- 5af893ba27ac…
| 1 | /** |
| 2 | * @file |
| 3 | * JavaScript to disable back button. |
| 4 | */ |
| 5 | |
| 6 | (function () { |
| 7 | // From: http:// |
| 8 | history.pushState({page: 1}, 'Title 1', '#no-back'); |
| 9 | window.onhashchange = function (event) { |
| 10 | window.location.hash = 'no-back'; |
| 11 | }; |
| 12 | |
| 13 | })(); |
La orden que mete la entrada en el historial admite un título, y el que lleva es «Title 1», título uno. La mayoría de los navegadores ni lo usa, así que no se ve en ninguna parte. Hay que repartir bien las responsabilidades, porque aquí es fácil confundirse. El fichero no lo escribió la CNMC: vive bajo la carpeta de módulos de terceros de Drupal, el gestor con el que está hecho el sitio, y viene dentro de Webform, el complemento con el que se montan formularios.
- Copia
- archivo
- Guardado
- 31 ago 2026
- Peso
- 72,8 kB
- sha256
- b809b960daab…
| 20 | <title>Quejas o sugerencias | CNMC</title> |
| 21 | <link rel="stylesheet" media="all" href="/ |
| 22 | <link rel="stylesheet" media="all" href="/ |
| 23 | <link rel="stylesheet" media="all" href="// |
| 24 | <link rel="stylesheet" media="all" href="/ |
| 25 | <link rel="stylesheet" media="print" href="/ |
| 26 | |
| 27 | <script type="application/json" data-drupal-selector=" |
| 28 | <script src="/ |
| 29 | <script src="/ |
| 30 | <script src="/ |
| 31 | <script src="/ |
| 32 | |
| 33 | </head> |
| 34 | <body class="layout-no-sidebars page-node-408817 path-node page-node-type-webform"> |
| 35 | <!-- Google tag (gtag.js) --> |
| 36 | <script async src=" |
| 37 | <script> |
| 38 | window.dataLayer = window.dataLayer || []; |
| 39 | function gtag(){ |
| 40 | gtag('js', new Date()); |
| 41 | |
| 42 | gtag('config', 'G-GJ0T3SEQ50'); |
En Webform, desactivar el botón de atrás es una casilla que el administrador de cada formulario marca o no marca. Se llama “Disable back button”, y su explicación dice que, marcada, no deja volver al formulario con el botón de atrás. En la CNMC está marcada en este formulario y en ninguno más de los que guardamos: de las 5.064 páginas del sitio, el fichero lo cargan dos, la de quejas en castellano y la misma en inglés.
La casilla tiene su sentido: que nadie regrese al formulario después de haberlo dejado. Lo que pasa es que el fichero actúa también mientras se está en él. En esta página todavía no se ha enviado nada, no hay nada que repetir, y atrás es lo que pulsa quien ha entrado por error, quien quiere releer la página anterior o quien se lo ha pensado mejor.
El 26 de septiembre de 2026 volvimos a pedir las dos cosas. La página sigue cargando el fichero, con otra coletilla de caché en su dirección, y el fichero es el mismo, byte a byte: sus trece líneas, su comentario en inglés, su enlace a Stack Overflow y su «Title 1». Y la pregunta sigue siendo la misma: si quiere usted que esto tenga respuesta obligatoria. La respuesta a la otra pregunta, la de si puede usted irse, ya la ha dado el fichero.
El botón de atrás pertenece al visitante, no al sitio. En la página donde se pregunta si su queja debe tener respuesta obligatoria, es lo primero que se le quita.
- La página https://cnmc.es/participa/quejas-o-sugerencias, guardada el 31 de agosto de 2026 y vuelta a pedir el 15 y el 26 de septiembre, carga en su cabecera el fichero webform.form.disable_back.js (331 bytes, trece líneas, comentario «JavaScript to disable back button»), que añade al historial una entrada con el fragmento #no-back y la repone cada vez que el fragmento cambia.
- El fichero lleva dentro la dirección de Stack Overflow de donde dice proceder y el título «Title 1».
- El 26 de septiembre el fichero servido tiene la misma huella que el guardado.
- Ejecutando ese fichero tal cual en un banco propio, tras pulsar atrás tres veces el navegador seguía en la misma página.
- Contado el 26 de septiembre sobre las 5.064 páginas guardadas de cnmc.es y www.cnmc.es en la captura cerrada el 11 de septiembre (la última entrada anterior al cierre de cada fichero), solo dos cargan ese fichero, la de quejas en castellano y en inglés; una recaptura posterior reescribió en el disco 1.040 de esas páginas, y en las 4.024 que conservan su huella no hay ninguna que lo cargue.
- La casilla de Webform que lo activa se llama “Disable back button”.
- No decimos que el código lo escribiera la CNMC: viene en el complemento Webform de Drupal, donde es una opción que se marca por formulario.
- No decimos que el formulario no funcione: no lo hemos enviado, ni vamos a enviarlo.
- No decimos qué hace el botón de atrás en todos los navegadores: lo medimos en un Chrome, con el fichero tal cual, en nuestra máquina y no contra el servidor de la CNMC.
- Y no decimos que marcar esa casilla sea un error en cualquier formulario: decimos en cuál está marcada.
De dónde sale cada cita
Cada trozo de código de esta ficha está en un fichero guardado tal como lo entregó el servidor, con su huella (sha256) y su hora. Las citas entre «» se comprueban por programa contra ese fichero antes de publicar.
- https://www.cnmc.es/modules/contrib/webform/js/webform.form.disable_back.js?tkm27131 de agosto de 2026, 16:03archivosha256 5af893ba27ac6c46c9daeb7a0a9f661d25a6706af2e9829fe3fc28a5be5b0b95
- https://www.cnmc.es/participa/quejas-o-sugerencias31 de agosto de 2026, 16:07archivosha256 b809b960daab59ab46b38c40661a67f248aa564f738806075a3f98f5aa666d6c
El 21 de septiembre de 2026, una de sus 5 citas ya no aparecía en la página. Lo que ha cambiado desde que lo contamos.