查看当前页面是否等于相对链接-JavaScript

查看当前页面是否等于相对链接-JavaScript,javascript,jquery,Javascript,Jquery,我知道这个问题的不同版本在过去被问过,尽管这个确切的问题还没有被问过(其他答案都不符合我的目的) 因此,这里是:我在JavaScript中有一个相对链接(存储为字符串),我试图查看该字符串是否等于我所在页面的当前URL (例如,如果JS链接是“/test”,url是http://example.com/test函数应返回true,而如果字符串为“/test”且当前url为http://example.com/derp函数应返回false) 最后: 应忽略URL中的哈希标记 Get变量也应该被忽

我知道这个问题的不同版本在过去被问过,尽管这个确切的问题还没有被问过(其他答案都不符合我的目的)

因此,这里是:我在JavaScript中有一个相对链接(存储为字符串),我试图查看该字符串是否等于我所在页面的当前URL

(例如,如果JS链接是
“/test”
,url是
http://example.com/test
函数应返回true,而如果字符串为
“/test”
且当前url为
http://example.com/derp
函数应返回false)

最后:

  • 应忽略URL中的哈希标记
  • Get变量也应该被忽略

我正在寻找JavaScript(或jQuery)中的一个函数来实现这一点,或者是一些能让我更接近实现这一点的函数(我必须假设有一个函数,因为这种语言(+这个框架)有很多方法来处理URL);如果没有人能告诉我一个jQuery插件可以这样做,或者给我看一段自定义编写的代码(我不可能是第一个要求这样做的人!)

这在我在一些网站的测试中起作用:

var fragment = '/test'; // assuming there's a slash at the front as you mention

var url = window.location.href.split('/');
var last_item = '/' + url[url.length-1];
last_item = last_item.replace(/(\?|\#).*/, '');

last_item == fragment ? alert('match') : alert('not a match');
更新: 更新为删除以“?”或散列(#)开头的查询字符串

好消息,更新如下:

var fragment = '/testtabs/test/url_test.html';
var url = window.location.pathname;

url == fragment ? alert('match') : alert('not a match');
试试这个

function CheckSlugValidity(slug){
    return slug.indexOf(window.location.pathname) == 0;
}
就像

CheckSlugValidity("/test");

此外,我不确定这是否恰当,但URL会被重写(由HTACCESS),因此如果您希望php最终做任何事情,请考虑一下哦,非常抱歉!我完全忘了说我试过什么。无论如何,我的第一次尝试是获取window.location并使用字符串操作。尽管这最终证明Wayyy很麻烦:(然后我在谷歌上搜索了一下,什么也没找到,所以我在这里问了:D我不知道location.pathname,现在我会试试,我唯一的问题是链接字符串可能也包含get变量和散列标记,所以我也需要一种方法来去除它们……我不是字符串操作大师,但如果站点是
H,这不会中断吗?)ttp://example.com/foo/test
?我在这里()和这里()进行了尝试,在那里效果同样好。可以肯定的是,在片段中有额外的斜杠的情况下,我尝试了,这也很有效(例如
/test/foo
)这应该打破它,因为此代码只比较URL的最后部分,因为您仍然只匹配URL的最后部分(因此简而言之,
fragment='/test'
应该只匹配
bjornthomson.com/test
)正如我在对我的问题的评论中所说的,我认为如果可以从slug中删除get变量和散列,这会起作用。如果我们只读取第一个问号/散列标记实例之前slug中的内容,会怎么样呢?我不确定我们将如何做……var windowUrl=window.location;windowUrl=windowUrl.indexOf(“#”)>-1?windowUrl.substring(0,windowUrl.indexOf(“#”):windowUrl;windowUrl=windowUrl.indexOf(“?”)>-1?windowUrl.substring(0,windowUrl.indexOf(“?”):windowUrl;这应该会删除散列标签并获得paramsheh good call naveen。奇怪的是,window.location.pathname与window.location.href甚至window.location有何不同?