编程语言
首页 > 编程语言> > 基于window.location.href的条件URL追加或重定向的Javascript

基于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