【问题标题】:JS - Redirect and return to home pageJS - 重定向并返回首页
【发布时间】:2018-02-28 11:24:58
【问题描述】:

我有一个问题,我想在Page1中创建一个脚本并在X秒后重定向到Page2,然后在Page2中返回到Page1,并且不难,这是我的问题,从第2页返回后,我想重定向到第3页,然后返回第1页,当我从第3页返回时,我想重定向到第4页,每次重定向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。

谢谢你帮助我!

【问题讨论】:

  • 我认为你最好解释一下为什么要使用这些而不是如何做这些
  • @GalAbra 他在哪里提到了 php?
  • 我认为有两种方法(我不是很有经验,也许有人可以换个想法),你可以通过 URL 参数传递最后一页的值,然后在 page1 你验证下一个重定向在哪里,然后使用 JS 执行此操作。或者您可以在本地/会话存储中存储一个变量,然后再次验证它以设置重定向。

标签: javascript jquery html redirect


【解决方案1】:

您需要一个有状态的解决方案。这是一个可能的解决方案:

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

【讨论】:

  • 好极了!!!!多谢,伙计!!!就在 function startRedirection(url) { setTimeout(() => location.href = url, 2000) } 我修改 function startRedirection(url) { setTimeout(function(){ location.href = url;}, 2000) } 和它有效!,这是最后一件事......你知道如何让它无限吗?谢谢!
  • 无限?你能解释一下流程吗? @Dibu Escobedo
  • 类似这样,page1=> page2=>page1 page1=>page3=>page1 page1=>page4=>page1 page1=> page2=>page1 page1=>page3=>page1 page1=> page4=>page1 page1=> page2=>page1 page1=>page3=>page1 page1=>page4=>page1 page1=> page2=>page1 page1=>page3=>page1 page1=>page4=>page1等等,依此类推,我尝试制作类似 bool var valida=true; 的东西do{ 脚本 } while(valida == true){ }
  • 总结永无止境以做出同样的事情
【解决方案2】:

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'
}

【讨论】:

    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-23
      • 2011-01-05
      • 1970-01-01
      • 2021-04-19
      • 1970-01-01
      • 2019-08-20
      • 2012-12-13
      • 2019-01-04
      相关资源
      最近更新 更多