基于window.location.href的条件URL追加或重定向的Javascript
作者:互联网
我正在尝试制作一个书签,单击该书签时将检查当前选项卡/窗口的URL,以查看其是否包含“ char1”和/或“ char2”(给定字符).如果两个字符都存在,它将重定向到另一个URL,对于其他两个,它将分别附加当前URL.
我相信必须有一种比以下方式更优雅的说法(到目前为止,这种方式对我来说非常有效),但是我对Javascript并不了解.我的(繁琐且重复的)工作代码(抱歉):
if (window.location.href.indexOf('char1') != -1 &&
window.location.href.indexOf('char2') != -1)
{
window.location="https://website.com/";
}
else if (window.location.href.indexOf('char1') != -1)
{
window.location.assign(window.location.href += 'append1');
}
else if (window.location.href.indexOf('char2') != -1)
{
window.location.assign(window.location.href += 'append2');
}
确实满足了我的需要,但是……至少可以说不是很优雅.
是否有更简单的方法可以做到这一点,例如使用var或伪对象?还是更好的代码?
解决方法:
dthorpe建议的(某种)重构:
var hasC1 = window.location.href.indexOf('char1')!=-1
var hasC2 = window.location.href.indexOf('char2')!=-1
var newLoc = hasC1
? hasC2 ? "https://website.com/" : window.location.href+'append1'
: hasC2 ? window.location.href+'append1' : '';
if (newLoc)
window.location = newLoc;
调用assign与将值分配给window.location相同,无论如何,您都在方法中使用了assignment =运算符来完成这两个工作:
window.location.assign(window.location.href+='append2')
实际上,这将在调用assign方法之前将“ append2”分配到window.location.href的末尾,从而使其变得多余.
您还可以通过将window.location设置为var来减少DOM查找.
标签:bookmarklet,conditional,url,append,javascript 来源: https://codeday.me/bug/20191106/2000544.html