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

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
9
0
12 905
12

Ответы 12

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

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

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

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

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

Зависит от ваших конкретных требований. Если вы разрешаете 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 - это внутренняя технология; вам нужно будет сделать это в 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 будет находиться в скрытом фрейме, и вы должны назвать свой видимый фрейм «VisibleFrame».

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

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

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

есть небольшая ошибка - frames ["displayArea"]. location.href = dashboard.url; должен читать фреймы ["displayArea"]. location.href = dashboards.url;

Pete Michaud 17.09.2008 21:41

Я пробовал этот код выше, он работает хорошо, но один конкретный сайт, похоже, вызывает обновление всей страницы (websitepulse), поэтому цикл останавливается. Есть ли способ запретить сайту в iframe захватить всю страницу браузера?

Codek 06.04.2011 13:47

Вы можете попробовать использовать Framekiller Killer: en.wikipedia.org/wiki/Framekiller#Framekiller_Killers

Jonny Buchanan 06.04.2011 14:24

Отличное спасибо. В конце концов, я использовал этот, потому что это было проще, чем настроить http-страницу для возврата кода 204: framekiller.heroku.com/onbeforeunload

Codek 06.04.2011 19:22

Отличный ответ здесь. Хотелось бы знать, как вставить это во фрейм веб-сайта, эти сайты рядом со вторым фреймом, который загружает разные ссылки. Как если бы у вас были картинки в одном кадре, а описание в другом. Очень новичок в HTML.

Dan Ciborowski - MSFT 29.09.2012 10:13

Скорее всего, это больше не будет работать из-за более строгих политик безопасности. Попробуйте - вы получите кучу ошибок «Отказано отображать '...' во фрейме, потому что для параметра« X-Frame-Options »установлено значение« DENY / SAMEORIGIN ».

thdoan 23.07.2015 05:35

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

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

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

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

Другие вопросы по теме