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