У меня есть проблема, я хочу создать скрипт на Page1 и через X секунд перенаправить на Page2, а внутри Page2 вернуться на Page1, и сделать это не сложно, и вот моя проблема, после возврата со страницы 2, я хочу перенаправить на Page3 и вернуться на Page1, и когда я перехожу с Page3, я хочу перенаправить на Page4, каждое перенаправление с X секундами. Я знаю, что могу перенаправить с метатегом

<meta http-equiv="refresh" content="X; 
URL=Page2.com">

И тот же тег для Page2, чтобы вернуться к Page1, но мне нужно сделать что-то вроде этого в Page1

<!-- First Redirect -->
<meta http-equiv="refresh" content="x; URL=Page2.com">
<!-- Second Redirect -->
<meta http-equiv="refresh" content="x+x; URL=Page3.com">
<!-- Third Redirect -->
<meta http-equiv="refresh" content="x+x+x; URL=Page4.com">
<!-- Fouth Redirect -->
<meta http-equiv="refresh" content="x+x+x+x; URL=Page5.com">

Есть что-нибудь к этому в скрипте? потому что это не сработало, всегда перенаправляйте меня на Page1.com.

Спасибо за помощь!

2
Dibu Escobedo 28 Фев 2018 в 14:24

3 ответа

Лучший ответ

Я решил так:

<script>
let urls = JSON.parse(localStorage.getItem('urls') || '[-1]')
let urlList = ['page2.com', 'page3.com', 'page4.com']

if(urls[0] == -1) { // fresh start
localStorage.setItem('urls', JSON.stringify(urlList))
startRedirection('page1.com') 
} else if(urls.length == 0) { // all redirects done
console.log("Exhausted")
localStorage.removeItem('urls') // removes the key "urls" for a fresh start
location.reload();
} else {
const url = urls.shift() // get the first url in "urls" array and remove it 
from the array
localStorage.setItem('urls', JSON.stringify(urls)) // update the state
startRedirection(url) // redirect
}

function startRedirection(url) {
setTimeout(() => location.href = url, 2000)
}
</script>
0
Dibu Escobedo 28 Фев 2018 в 19:54

Page1.html: OnLoad проверяет параметр url для следующей страницы

function onLoad(){
   var url_string = window.location.href;
   var url = new URL(url_string);

   //Set pageName and time from url or some default value.
   var pageName = url.searchParams.get("pageName") !== null ? 
url.searchParams.get("pageName") : 'page2.html';
   var time = url.searchParams.get("time") !== null ? url.searchParams.get("time") : 1000;

   setTimeout(function(){
     window.location = pageName;
   }, parseInt(time));
}

Page2.html: передать следующую страницу перенаправления в качестве параметра

function onLoad(){
    window.location = 'page1.html?pageName=page3.html&time=2000'
}
0
karan3112 28 Фев 2018 в 11:48

Вам нужно решение с состоянием. Вот возможное решение:

// PAGEX content where X = 2, 3, 4, 5...
<meta http-equiv="refresh" content="X; URL=page1.com">

И

// PAGE1 content:

<script>
let urls = JSON.parse(localStorage.getItem('urls') || '[-1]')
let urlList = ['page2.com', 'page3.com', 'page4.com']

if(urls[0] == -1) { // fresh start
  localStorage.setItem('urls', JSON.stringify(urlList))
  startRedirection(urlList[0])
} else if(urls.length == 0) { // all redirects done
  console.log("Exhausted")
  localStorage.removeItem('urls') // removes the key "urls" for a fresh start
} else {
  const url = urls.shift() // get the first url in "urls" array and remove it from the array
  localStorage.setItem('urls', JSON.stringify(urls)) // update the state
  startRedirection(url) // redirect
}

function startRedirection(url) {
  setTimeout(() => location.href = url, 2000)
}

</script>
2
mehulmpt 28 Фев 2018 в 11:34