2008-09-17 17 views
8

Aquí hay un desafío con el que me han encargado recientemente. Todavía no he descubierto la mejor manera de hacerlo, tal vez alguien más tiene una idea.¿Cómo puedo pasar de una página a otra?

Utilizando PHP y/o HTML, cree una página que pase por cualquier cantidad de páginas en un intervalo determinado.

Por ejemplo, cargaríamos esta página y nos llevaría a google por 20 segundos, luego a yahoo por 10 segundos, luego a stackoverflow por 180 segundos y así sucesivamente.

Respuesta

1

Utilice un iframe independiente para el contenido, luego use Javascript para delay() un período de tiempo y establezca la propiedad location del iframe.

1

Cuando te llevan a otro sitio (por ejemplo, Google), el control pasa a ese sitio, por lo que para que tu script siga en ejecución, necesitarás cargar el nuevo sitio en un marco, y mantener tu script (que Me imagino que podría implementarse más fácilmente usando Javascript) en otro marco (que podría hacerse muy pequeño para que no pueda verlo).

0

Puede hacer esto con JavaScript con bastante facilidad. Ayudaría a conocer el entorno de despliegue. ¿Es un kiosco o algo así?

Para la solución de JavaScript, publique una página que contenga un JavaScript que abrirá una nueva ventana del explorador. La página del controlador hará que la nueva ventana del navegador recorra una serie de páginas. Esa es la forma más sencilla de hacer esto que puedo pensar.

Editar: De acuerdo con el comentario de Simon. Esta solución funcionaría mejor en un kiosco o en un entorno de visualización grande y público donde las páginas solo se muestran sin ninguna interacción del usuario.

0

Depende de sus requisitos exactos. Si permite JavaScript y permite marcos, puede pegar un marco oculto dentro de un conjunto de marcos en su página en la que cargue JavaScript. Este JavaScript controlará el contenido del cuadro principal utilizando el objeto window.location y la función setTimeout.

Lo malo es que la barra de direcciones del usuario no se actualizará con la nueva URL. No estoy seguro de cómo esto podría lograrse de lo contrario. Si puede aclarar las limitaciones, puedo brindarle más ayuda.

Editar - La sugerencia de Shad es una posibilidad aunque, a menos que el usuario active la acción, el navegador puede bloquear la ventana emergente. De nuevo, tendrías que aclarar si una ventana emergente está permitida.

0

Cree una página HTML de envoltura con un IFrame, con un tamaño de 100% x 100%. A continuación, agregue un javascript que cambie el src del IFrame entre intervalos establecidos.

0

Creo que debería funcionar como gabbly.com, que apesta en otros sitios web y los muestra con su propio contenido sobre él.

Una vez que hayas leído el otro sitio y estés listo para mostrarlo, no podrás hacerlo "en PHP"; usted tendría que enviar un HTML redirigir meta-tag:

<meta HTTP-EQUIV="REFRESH" content="15; url=http://www.thepagecycler.com/nextpage.html"> 

O usted podría utilizar Javascript en lugar de la meta-etiqueta.

0

Esto no se puede hacer en un script PHP, a menos que desee editar el redireccionamiento ....PHP es una tecnología de back-end; vas a necesitar hacer esto en Javascript o similares.

Lo mejor que vas a hacer, hasta donde yo sé, es crear un archivo de texto en tu servidor web y cargar una dirección HTTP diferente en función del tiempo de ese archivo de texto, luego redirigir el navegador al sitio encontrado en ese archivo de texto.

0

La primera solución que me viene a la mente es hacer esto en un conjunto de marcos. Oculta uno de los marcos, y el otro muestra las páginas en cuestión. Conduzca las transiciones de página con Javascript desde el marco oculto.

function RefreshFrame() 
{ 
    parent.VisibleFrame.location.href = urlArray[i]; 
    i++; 

    if(i < urlArray.length) SetTimeout("RefreshFrame()", 20000); 
} 

var i = 0; 
var urlArray = ['http://google.com','http://yahoo.com', 'http://www.search.com']; 
RefreshFrame(); 

En este ejemplo, el Javascript sería en el marco de hiddend, y que sería el nombre de su marco visible "VisibleFrame".

responsabilidad: Me acaba de escribir el código en la ventana de comentario y no han probado

0

La teoría detrás de la solicitud es básicamente la capacidad de desplazarse a través de cuadros de mando de las páginas web para varios sistemas desde un PC "quiosco". Superviso un centro de datos y tenemos varios sistemas de monitoreo que me permiten ver tableros para temps, tiempo de actividad del sistema, etc. etc. La idea es cargar una página que pasaría del panel al tablero restante en cada una por un período de tiempo especificado por yo, 1 minuto en este foro, 30 segundos en el siguiente tablero, 2 minutos en el siguiente y así sucesivamente ... Javascript está absolutamente permitido (aunque tengo poca experiencia con él). Mis medios de elección son PHP/HTML y no veo una manera de hacer que esto suceda limpiamente con sólo ellos ..

18
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html lang="en"> 
<head> 
<title>Dashboard Example</title> 
<style type="text/css"> 
body, html { margin: 0; padding: 0; width: 100%; height: 100%; overflow: hidden; } 
iframe { border: none; } 
</style> 
<script type="text/javascript"> 
var Dash = { 
    nextIndex: 0, 

    dashboards: [ 
     {url: "http://www.google.com", time: 5}, 
     {url: "http://www.yahoo.com", time: 10}, 
     {url: "http://www.stackoverflow.com", time: 15} 
    ], 

    display: function() 
    { 
     var dashboard = Dash.dashboards[Dash.nextIndex]; 
     frames["displayArea"].location.href = dashboard.url; 
     Dash.nextIndex = (Dash.nextIndex + 1) % Dash.dashboards.length; 
     setTimeout(Dash.display, dashboard.time * 1000); 
    } 
}; 

window.onload = Dash.display; 
</script> 
</head> 
<body> 
<iframe name="displayArea" width="100%" height="100%"></iframe> 
</body> 
</html> 
+0

hay un pequeño error - marcos ["displayArea"]. Location.href = dashboard.url; debe leer marcos ["displayArea"]. Location.href = dashboards.url; –

+1

@Pete Michaud No :) – jensgram

+0

He intentado este código arriba, funciona bien, pero un sitio en particular parece causar una actualización de toda la página (página web) por lo que el ciclo se detiene. ¿Hay alguna manera de evitar que el sitio en el iframe se apodere de toda la página del navegador? – Codek

1

me las arreglé para crear esta cosa. No es bonito, pero funciona.

<?php 
# Path the config file, full or relative. 
$configfile="config.conf"; 
$tempfile="tmp.html"; 
# Read the file into an array 
$farray=file($configfile); 
# Count array elements 
$count=count($farray); 
if(!isset($_GET['s'])){ 
    $s=0; 
}else{ 
    $s=$_GET['s']; 
if($s==($count-1)){ # -1 because of the offset in starting our loop at 0 instead of 1 
    $s=0; 
}else{ 
    $s=$_GET['s']+1; # Increment the counter 
} 
} 
# Get the line from the array 
$entry=$farray[$s]; 
# Break the line on the comma into 2 entries 
$arr=explode(",",$entry);  
# Now each line is in 2 pieces - URL and TimeDelay 
$url=strtolower($arr[0]); 
# Check our url to see if it has an HTTP prepended, if it doesn't, give it one. 
$check=strstr($url,"http://"); 
if($check==FALSE){ 
    $url="http://".$url; 
    }   
# Trim unwanted crap from the time 
$time=rtrim($arr[1]);    
# Get a handle to the temp file 
$tmphandle=fopen($tempfile,"w"); 
# What does our meta refresh look like? 
$meta="<meta http-equiv=\"refresh\" content=\"".$time.";url=index.php?s=".$s."\">\n"; 
# The iframe to display 
$content="<iframe src =\"".$url."\" height=\"100%\" width=\"100%\"></iframe>"; 
# roll up the meta and content to be written 
$str=$meta.$content; 
# Write it 
fwrite($tmphandle,$str); 
# Close the handle 
fclose($tmphandle); 
# Load the page 
die(header("Location:tmp.html"));    
?> 

Los archivos de configuración se parece a (URL, tiempo de estancia en esa página): google.com, 5 http://yahoo.com,10

-1

Hay un montón de maneras que usted puede hacer esto, iv escrito varios guiones y herramientas con todo, desde JS a Ruby

Al final Era mucho más fácil de usar http://dashboardrotator.com. Manejó reinicios de navegador, asignación de memoria y cierre de ventana accidental para mí con una GUI simple y agradable.

Cuestiones relacionadas