queryFlag / isInIframe
Lee una bandera booleana de la URL y averigua si la página está incrustada: las dos comprobaciones que hay detrás de ?embed, ?readonly y ?debug.
API
| Función | Descripción |
|---|---|
queryFlag(key, url?) | Si un parámetro de consulta se lee como verdadero |
isInIframe() | Si esta página corre dentro de un iframe; false en el servidor |
queryFlag
| Parámetro | Descripción | Tipo | Por defecto |
|---|---|---|---|
key | Nombre del parámetro | string | Obligatorio |
url | URL completa o cadena de consulta | string | La ubicación actual |
Verdadero para ?k, ?k=, ?k=1 y ?k=true (sin distinguir mayúsculas). Falso para todo lo demás, incluidos el parámetro ausente y un ?k=false explícito.
Ejemplo
Leer una bandera
import { queryFlag } from 'ranuts';
queryFlag('embed', '?embed'); // true ← la forma más habitual
queryFlag('embed', '?embed=1'); // true
queryFlag('embed', '?embed=true'); // true
queryFlag('embed', '?embed=false'); // false
queryFlag('embed', '?lang=en'); // falseDetectar el modo incrustado
import { queryFlag, isInIframe } from 'ranuts';
// Está incrustada si va en un marco, o si el anfitrión lo pidió expresamente.
const embedded = isInIframe() || queryFlag('embed') || queryFlag('embedded');
if (embedded) {
document.body.classList.add('embed-mode');
}No medir dentro de la página de otro
import { isInIframe } from 'ranuts';
// Medir aquí nos apuntaría las visitas del sitio anfitrión.
if (!isInIframe()) initAnalytics();Vista previa de solo lectura
import { queryFlag } from 'ranuts';
openDocument(file, { readonly: queryFlag('readonly') });Notas
Lo habitual es escribir la bandera a secas.
?embedno lleva valor, así quegetQuery(url).embedes''(falso), y una comprobación de veracidad sin más se pierde en silencio la forma más común. Para eso existequeryFlag.?k=falsees falso. Se respeta la negación explícita en lugar de tomarla por «está, luego está activo».isInIframeva protegida. Leerwindow.parentpuede lanzar una excepción entre orígenes distintos en algunos motores; un padre ilegible se toma por incrustado, porque eso es justo lo que significa.Ambas son seguras en el servidor. Sin
window,isInIframeesfalseyqueryFlagesfalsesalvo que se le pase unaurl, así que basta con darles la URL para usarlas en un script de compilación.