visitar turismo secretos revelados pueblos para nombres mundo morelia michoacan magicos lugares culturales cerca atractivos javascript css client-side

javascript - turismo - Restablecer el estado visitado en los enlaces



nombres de lugares de michoacan (10)

¿Hay alguna manera de restablecer el estado visitado en los enlaces?

El escenario es el siguiente: en un sitio de intranet que naturalmente tiene muchos enlaces, queremos que un enlace tenga el estado de "visitado" solo durante un período de tiempo determinado. Por lo tanto, estoy buscando una forma de manipular el estado visitado de los enlaces.

¿Es esto factible? Debería ser un navegador cruzado, por supuesto.

ETA: las soluciones del lado del cliente son perfectamente aceptables. Preferido incluso .. :-)

ETA-2: se permiten cookies. Sin restricciones :-)


¿Entonces solo quieres hacer que los enlaces "visitados" se vean diferentes durante cierto tiempo? Esto es fácil si omite la pseudoclass :visited del navegador y simplemente asigna un nombre de clase personalizado. Usar cookies; tienen vencimiento incorporado.

Configure un controlador de JavaScript para cuando haga clic en enlaces. Pseudo-código:

function clickHandler(event) { var href = /* (figure out which anchor was clicked and get the href) */ // (you might need to escape the href) setCookie(href, "visited", 5); // set cookie for 5 days }

Ejecutará esta función justo antes de seguir el enlace.

Luego, al cargar la página, puedes hacer algo como esto:

function markVisitedLinks() { var anchors = document.getElementsByTagName("a"); for (var i = 0; i < anchors.length; i++) { if (readCookie(anchors[i].href) == "visited") { anchors[i].className += " visited"; } } }

Toma las funciones setCookie y readCookie de QuirksMode.


Cambiar la forma en que funcionan los enlaces generalmente confundirá y / o molestará a los usuarios. Es una forma segura de reducir la usabilidad percibida de su sitio.

¿Qué estás realmente tratando de lograr?

Si tienes subpáginas en tu sitio que cambian (apuntando a contenido nuevo) tus usuarios se darán cuenta de eso . Si tiene un nuevo artículo brillante de dos o tres niveles en la estructura de su página, agregue una sección de novedades con un enlace en su página principal si es tan importante. (O envíe un aviso con un enlace en un correo electrónico, o ...)


Cambie la página de destino para aceptar un parámetro de una cadena de consulta y para establecer una cookie con una duración adecuada para ese valor.

En la página de referencia, ponga algo de Javascript para verificar la existencia de la cookie.

Si no existe, haga que el Javascript agregue un parámetro a la URL con un gran número aleatorio (para que el historial del navegador no lo reconozca).

Si existe, haga que el Javascript agregue un parámetro con el mismo valor que la cookie (para que el historial del navegador lo reconozca).

Notas:

  • Supongo que el objetivo del enlace está en el mismo dominio que la página de referencia. De lo contrario, use una página de redirección en el mismo dominio.

  • Esto solo funcionará si el historial del navegador es tan largo como la vida de la cookie. Si tiene un historial de navegador corto o inexistente, el cliente no lo mostrará como visitado.

  • Por favor no hagas esto! Sus usuarios tienen una buena comprensión de lo que significa "visitado". no lo rompa, solo los confundirá.

  • ¿Necesita considerar soluciones del lado del servidor para las personas que no ejecutan Javascript?

  • No he probado este diseño.


Como el problema puramente de visualización, no necesita preocuparse por marcar de alguna manera los enlaces visitados de nuevo a no visitados.

Agregue un controlador onclick a sus enlaces que cambie el estilo del enlace para parecerse al estado visitado. Desde este controlador puedes, por ejemplo. escribe el estado del enlace en una cookie.

Luego puede verificar periódicamente si hay enlaces que ya no deberían ser visibles y cambiar el estilo a la normalidad.


Creo que esta es una propiedad del navegador, por lo que no se puede controlar desde el lado del servidor.

Un ''truco'' podría ser agregar una cadena de consulta no utilizada al final de los enlaces, y rotarlos periódicamente. Aunque esto significa que la duración del estado "visitado" para un cliente en particular depende de cuándo gira la cadena de consulta en lugar de un período de tiempo fijo.


Mantenga una lista de las URL visitadas con la marca de tiempo a la sesión de los usuarios.

Cuando se carga la página del enlace

  • enjuagar urls rancias
  • enlaces de estilo contenidos en la lista tal como se visualiza.

Si es una solución simple del lado del servidor con "cambio de URL", como:

" http: // url1? expire2008_10_20 " que se convierte en " http: // url1? expire2008_10_21 " después de 24 horas,

no está bien, puedes usar lo siguiente:

Permita que el servidor almacene una cookie en un navegador con la última hora visitada del enlace. Si hubiera muchos enlaces y la longitud máxima de la cookie no fuera suficiente, puedes

  1. almacenar una cookie de sesión y mantener los datos visitados en el servidor
  2. usar flash analógico de cookies - Objeto compartido local

También coloque un código que aleatorice la url para el cliente si ha expirado la última visita.


Siento algo mal en la idea.

¿Cuál es el propósito de restablecer el estado visitado del enlace? para notificar que algunos datos nuevos están disponibles? entonces tal vez algo más detallado como "NUEVA" imagen sería más apropiado?

por otro lado, si realmente necesita hacer esto, cambie la URL


Los enlaces aparecen como "visitados" cuando el navegador elige aplicar la pseudo-clase CSS :visited .

La forma del lado del cliente para restablecer los enlaces al estado no visitado es (de alguna manera) borrar el historial de navegación. Me sorprendería mucho saber que hay una forma portátil de hacerlo. También tiene efectos secundarios desagradables, como paralizar el comportamiento de las barras de ubicación inteligentes sensibles a la historia, como la de Firefox 3.

Como sugirió Drew Noakes, una forma de servidor es agregar algunos parámetros de consulta de ruido a los enlaces, y cambiar periódicamente el parámetro de consulta. Esto solo da una mala aproximación del comportamiento que desea. Para obtener el comportamiento "correcto" necesitaría rastrear el historial de páginas visitadas por lado del servidor del usuario, para que pueda cambiar el parámetro de ruido para una página específica solo después del tiempo requerido.

Dicho todo, probablemente sea una mala idea tratar de "restablecer el estado visitado en los enlaces".

Creo que una mejor solución sería ajustar el estilo de la página para que la pseudoclase visitada devuelva lo mismo que la pseudoclase del enlace. Luego mantenga un historial del lado del servidor de los enlaces visitados por usuario, y ajuste la visualización de enlaces usando una clase visited explícita.

Si no tiene a mano la identidad del usuario y no desea requerir el inicio de sesión, siempre puede usar una cookie aleatoria persistente.


¿Es suficiente simplemente formatear la propiedad CSS :visited del enlace para que parezca que nunca se hizo clic?

No sé si desea realizar un seguimiento de los enlaces visitados durante un tiempo o simplemente mostrarlos de la misma manera todo el tiempo; si este último, entonces un simple CSS (como a continuación) haría.

a, a:visited { color: blue; text-decoration: underline } a:hover, a:active { color: orange; }