Как я могу пролистать страницы? - PullRequest
8 голосов
/ 17 сентября 2008

Вот задача, с которой я недавно справился. Я до сих пор не нашел лучший способ сделать это, возможно, у кого-то есть идея.

Используя PHP и / или HTML, создайте страницу, которая перебирает любое количество других страниц с заданным интервалом.

Например, мы бы загрузили эту страницу, и нам потребовалось бы 20 секунд для Google, затем 10 секунд для Yahoo, затем 180 секунд для стекопотока и так далее и так далее.

Ответы [ 12 ]

18 голосов
/ 17 сентября 2008
<!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>
1 голос
/ 17 сентября 2008

Мне удалось создать эту вещь. Это не красиво, но работает.

<?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"));            
?>

Файлы конфигурации выглядят так (URL, время оставаться на этой странице): google.com, 5 http://yahoo.com,10

1 голос
/ 17 сентября 2008

Когда вы переходите на другой сайт (например, Google), контроль переходит на этот сайт, поэтому, чтобы ваш скрипт продолжал работать, вам нужно будет загрузить новый сайт во фрейм и сохранить ваш скрипт (который я Я мог бы предположить, что наиболее легко может быть реализован с использованием Javascript) в другом кадре (который может быть сделан очень маленьким, чтобы вы не могли его видеть).

1 голос
/ 17 сентября 2008

Используйте отдельный iframe для контента, затем используйте Javascript для delay() периода времени и установите свойство location iframe.

0 голосов
/ 13 февраля 2014

Существует множество способов сделать это, я написал несколько скриптов и инструментов со всем, от JS до Ruby

В конце концов, было гораздо проще использовать http://dashboardrotator.com. Он обрабатывал перезапуски браузера, распределение памяти и случайное закрытие окна для меня с красивым простым графическим интерфейсом.

0 голосов
/ 17 сентября 2008

Теория, лежащая в основе запроса, заключается в возможности прокручивать панели мониторинга веб-страниц для различных систем с компьютера «киоска». Я наблюдаю за центром обработки данных, и у нас есть несколько систем мониторинга, которые позволяют мне просматривать информационные панели для температуры, времени работы системы и т. Д. И т. Д. Идея состоит в том, чтобы загрузить страницу, которая будет циклически переходить от приборной панели к приборной панели, оставаясь на каждой в течение указанного мной времени, 1 минуты на этой доске, 30 секунд на следующей доске, 2 минуты на следующей и так далее. Javascript is абсолютно допустимо (хотя у меня мало опыта с этим). Мой выбор - PHP / HTML, и я не вижу способа сделать это чисто с помощью них ...

0 голосов
/ 17 сентября 2008

Первое решение, которое приходит на ум, - это сделать это в наборе кадров. Скройте один из фреймов, а другой отобразит соответствующие страницы. Управляйте переходами страниц с помощью Javascript из скрытой рамки.

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();

В этом примере Javascript будет находиться в рамке hiddend, и вы назовете видимую рамку «VisibleFrame».

Отказ от ответственности: я только что написал этот код в окне комментариев и не проверял его

0 голосов
/ 17 сентября 2008

Это невозможно в скрипте PHP, если только вы не хотите редактировать перенаправление ... PHP - это серверная технология; вам нужно будет сделать это в Javascript или подобном.

Насколько я знаю, лучшее, что вы собираетесь сделать, - это создать текстовый файл на вашем веб-сервере и загрузить другой HTTP-адрес в зависимости от времени из этого текстового файла, а затем перенаправить браузер на сайт найдено в этом текстовом файле.

0 голосов
/ 17 сентября 2008

Я думаю, что это должно работать как gabbly.com , который всасывает другие веб-сайты и отображает их со своим собственным контентом поверх него.

Как только вы прочитаете другой сайт и будете готовы его отобразить, вы не сможете сделать это «на PHP»; вам нужно будет отправить метатег перенаправления HTML:

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

Или вы можете использовать Javascript вместо мета-тега.

0 голосов
/ 17 сентября 2008

Создайте HTML-страницу-оболочку с IFrame размером 100% x 100%. Затем добавьте JavaScript, который меняет src IFrame между установленными интервалами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...