编写此代码的最佳方法是什么?我们想让知道如何添加?Redirect = No的人留在页面上并查看它,否则该人将被重定向到新站点或“我们已移动”页面。一个示例将非常有助于我了解如何检测GET url用例。我是一名Noobie JavaScript编码器,非常感谢您的帮助!

选项1


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


选项2(更人性化的方法)


用例1:oldsite.mysite.com:站点立即重定向到new
现场
用例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>

最佳答案

在实际代码中取消注释。



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);

09-11 00:28