Как я могу перебирать страницы?

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

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

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

Solutions Collecting From Web of "Как я могу перебирать страницы?"

<!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> 

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

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

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

 <?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

Зависит от ваших точных требований. Если вы разрешаете JavaScript и разрешаете кадры, вы можете вставлять скрытый фрейм в набор фреймов на своей странице, в который вы загружаете JavaScript. Затем этот JavaScript будет управлять содержимым основного фрейма с помощью объекта window.location и функции setTimeout.

Недостатком было бы то, что адресная строка пользователя не обновлялась новым URL-адресом. Я не уверен, как это было бы возможно в противном случае. Если вы можете уточнить ограничения, я могу предоставить дополнительную помощь.

Изменить – предложение Шада – это возможность, хотя, если пользователь не запускает действие, браузер может заблокировать всплывающее окно. Опять же вам нужно будет выяснить, допустимо ли всплывающее окно.

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

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

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

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

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

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

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

Первое решение, которое приходит в голову, – это сделать это в наборе фреймов. Скройте один из кадров, а другой отобразите страницы, о которых идет речь. Переместите переходы страниц с помощью 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».

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

Вы можете сделать это с помощью JavaScript довольно легко. Это поможет узнать среду развертывания. Это киоск или что-то еще?

Для решения JavaScript откройте страницу, содержащую JavaScript, который откроет новое окно браузера. Страница контроллера затем заставит новое окно браузера циклически перемещаться по серии страниц. Это про самый простой способ сделать это, о чем я могу думать.

Изменить: Согласиться с комментарием Саймона. Это решение будет работать лучше всего в киоске или в широкой публичной среде отображения, где страницы просто отображаются без какого-либо взаимодействия с пользователем.

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

Есть несколько способов, которыми вы можете это сделать, iv написал несколько сценариев и инструментов со всем, от JS до Ruby

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