¿Cómo puedo determinar si la página se está viendo a través de lightbox?

2 minutos de lectura

Tengo varios sitios en los que estoy trabajando que están cargando subpáginas a través de lightbox. Google encuentra el contenido real, pero las páginas son horribles ya que no están destinadas a cargar todos los encabezados y demás; este es contenido destinado a la entrega de lightbox (ajax, fancybox).

En PHP, o javascript si es necesario, ¿cómo puedo determinar si el contenido se ve en una caja de luz o no? Sería bueno lanzar un enlace “ver la página original” o algo así.

  • Sé que fancybox puede manejar datos AJAX e iframes. Si es lo último, puede obtener el src del iframe. Si es lo primero, puede envolverlo en un div que tal vez tenga un data-url atributo de la url.

    – CWSpear

    23 de abril de 2012 a las 16:05

  • probé esto data-url método y no parecía conseguir que hiciera nada. Tal vez no lo estoy entendiendo lo suficientemente bien. La mejor información que pude encontrar fue aquí: foro.jquery.com/topic/… y eso no tenía mucha información.

    – Tostada Fantasma

    23 de abril de 2012 a las 16:24

lightbox como cualquier otra biblioteca similar, use AJAX para extraer contenido … no estoy seguro de si puede detectar si es un estándar jquery o moottools o lightbox porque todos ustedes la misma tecnología

Lo que puedes hacer es detectar si tu página ha sido llamada a través de AJAX

function isAjax() {
    return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']=="XMLHttpRequest");
}

if(isAjax())
{
    die("Don't Use AJAX");
}
else
{
    echo "WELCOME" ;
}

  • ¡Sí! Gracias. Esto es exactamente lo que estaba buscando.

    – Tostada Fantasma

    23 de abril de 2012 a las 16:29

Los lightboxes a menudo usan iframes para mostrar páginas externas. Si este es el caso (puede inspeccionar Lightbox usando Firebug para verificar esto), puede usar window.top en JavaScript para verificar esto.

if (window.top.location != window.location) {
    //this page is inside a frame or iframe
}

Si está utilizando la última versión de fancyBox con las opciones predeterminadas, este truco debería funcionar:

<?php echo (isset($_SERVER['HTTP_X_FANCYBOX']) && $_SERVER['HTTP_X_FANCYBOX']) ? 'is fancyBox' : 'is not fancyBox' ?>

  • Al usar Fancybox 2.1.5, que es la versión de producción actual, se informó que “no es fancyBox” tanto en FancyBox como cuando la página se cargó directamente.

    – jerrygarciuh

    10 mayo 2016 a las 17:05

¿Ha sido útil esta solución?