У меня есть массив [1, 2, 55, 76,...]
где я создаю URL-адреса
www.example.com/id/1
www.example.com/id/2
www.example.com/id/55
...
Вопрос: Как показать каждый URL-адрес на несколько секунд (3s) и перенаправить на следующий URL-адрес?
Моя идея: использование iframe/jQuery
Я открыт для идей/кода/предложений.
Здесь JS-решение. Все URI записываются в массив по PHP, затем через них проходит интервал JS:
var urls = ['www.example.com/id/1','www.example.com/id/2','www.example.com/id/55'];
var current = 0;
var interval = window.setInterval(function(){
document.getElementById('container').innerHTML = urls[current];
current += 1;
if(!urls[current]) {
window.clearInterval(interval);
}
}, 1000);
На стороне PHP первая строка будет выглядеть так ($uris
- это массив со всеми URI):
echo "var urls = ['".implode("','", $uris)."']";
Вот пример JSFiddle.
echo 'var urls = ', json_encode($urls);
было бы предпочтительнее, как если бы использовалась переменная закрытия, ссылающаяся на iframe, и фактически устанавливала атрибут src
в iframe для нового URL
довольно простая реализация JS была бы такой:
var interval = (function(iframe)
{
var idx = 0,//current idx
urls = <?= json_encode($urlArray); ?>;//array of urls
iframe.src = urls[idx++];//set first url
return setInterval(function()
{//callback function, will be executed every 3 seconds
iframe.src = urls[idx++];
if (idx >= urls.length)
{//we've just reached set last url
idx = 0;//this resets the loop, after 3 seconds, the first url is used again
//alternatively
clearInterval(interval);//end of the loop
}
}, 3000);//3000 miliseconds, or every 3 seconds
}(document.getElementById('yourIframeID')));//pass reference to your iframe here
Эта строка:
<?= json_encode($urlArray) ?>
Является, конечно, инструкцией PHP и должен работать на стороне сервера, если вы не можете изменить JS с PHP, вы можете получить URL-адреса через вызов ajax
iframe.src
URL-адреса, а затем просто заканчивает интервал, инструкции iframe.src
закомментированы, так как скрипка использует div, но вы получаете основную идею
sleep
используется на стороне сервера, он не может показать код перед сном, а затем перенаправить