在javascript中重定向:IF GET参数键允许保留在页面上;否则重定向到另一个页面

时间:2017-11-16 00:36:18

标签: javascript if-statement url redirect switch-statement

编写此代码的最佳方法是什么?我们想让那些知道如何添加?Redirect = No的人在页面上附加网址并查看该网页,否则该人将被重定向到新网站或者#34;我们已移动的&#34 ;页。一个例子可以帮助我非常了解如何检测GET url用例。我是一个noobie javascript编码器,所以非常感谢你的帮助!

选项#1

  • 使用案例1: oldsite.mysite.com:重定向到新网站用例
  • 使用案例2: oldsite.mysite.com?Redirect=No:不重定向且页面正常加载

选项#2(更加用户友好的方法)

  • 用例1: oldsite.mysite.com:网站立即重定向到新 站点

  • 用例2: oldsite.mysite.com?Redirect=No:不重定向和 页面正常加载

  • 用例3: oldsite.mysite.com/AnyOtherPage:重定向到“我们是 移动页面“然后在”x“秒后重定向到新网站。

  • 用例4: oldsite.mysite.com/AnyOtherPage?Redirect=No:不 重定向,页面正常加载

<script>

// Check if the GET url parameter of "redirect=NO" is appended to the url 
and redirect if there is no parameter defined.


$(function() {


  if (  ... //url equals oldsite.mysite.com ...  )

      //GET redirect=NO so do nothing and stay here

      window.location.href = "https://newsite.mysite.com";

     }



   else if ( ... //url equals oldsite.mysite.com/anyOtherPage ...  )

     //GET redirect=NO so do nothing and stay here

     window.location.href = "https://oldsite.mysite.com/we-have-moved";

  }

 });

</script>

或者看起来更像这样吗?

<script>

switch(expression) {

    case n:
         //GET url contains parameter "Redirect=NO"
         break;

    case n:
         if (//url contains a child page name) {

          window.location.href = "https://newsite.mysite.com/we-have-moved";

             }

         break;

   default:
         window.location.href = "https://newsite.mysite.com"; 

 }

</script>

1 个答案:

答案 0 :(得分:0)

在实际代码中取消注释。

var sleep =(ms)=> new Promise((res, rej)=>{
         setTimeout( res, ms );
});
var redirect = async (pathname, ms) => {
    if(ms){ 
       await sleep(ms);
       console.log('waiting for' + ms + '...');
    }else{
      console.log('immediate');
    }
    
    console.log('http://newUrl.com' + pathname);//location.href = 'http://newUrl.com' + pathname 
}

var main = (url, ms) => {
  var u =new URL(url);
  var sp = Array.from(u.searchParams.entries());
  sp.some((arr,i)=>arr[0] === 'Redirect' && arr[1]=== 'No')? '': u.pathname === '/' ? redirect(''+u.search,0) : redirect(u.pathname+u.search, ms);
}




main('http://oldsite.mysite.com?Redirect=No', 5000);
main('http://oldsite.mysite.com/AnyOtherPage?Redirect=No', 5000);

console.log('redirection cases');
main('http://oldsite.mysite.com/AnyOtherPage', 5000);
main('http://oldsite.mysite.com', 5000);