有没有任何方法来获取没有查询字符串的URL?

时间:2011-04-28 10:58:31

标签: javascript url

我有一个类似http://localhost/dms/mduserSecurity/UIL/index.php?menu=true&submenu=true&pcode=1235的网址。

我想获取没有查询字符串的网址:http://localhost/dms/mduserSecurity/UIL/index.php

JavaScript中有没有这方法?目前我正在使用document.location.href,但它会返回完整的网址。

15 个答案:

答案 0 :(得分:341)

了解Window.locationLocation界面:

var url = [location.protocol, '//', location.host, location.pathname].join('');

答案 1 :(得分:285)

试试这个:window.location.href.split('?')[0]

答案 2 :(得分:29)

location.toString().replace(location.search, "")

答案 3 :(得分:8)

var url = window.location.origin + window.location.pathname;

答案 4 :(得分:7)

如果您还想删除哈希,请尝试以下方法:window.location.href.split(/[?#]/)[0]

答案 5 :(得分:5)

尝试:

document.location.protocol + '//' +
document.location.host +
document.location.pathname;

(注意:.host而不是.hostname,以便在必要时也包含端口

答案 6 :(得分:3)

使用split(简单方法)剪切字符串:

var myString = "http://localhost/dms/mduserSecurity/UIL/index.php?menu=true&submenu=true&pcode=1235"
var mySplitResult = myString.split("?");
alert(mySplitResult[0]);

答案 7 :(得分:2)

获取除查询以外的URL的每个部分:

var url = (location.origin).concat(location.pathname).concat(location.hash);

请注意,这也包括哈希值,如果有的话(我知道你的示例网址中没有哈希值,但我为了完整性而包含了这个方面)。要消除哈希,只需排除.concat(location.hash)

最好使用concat将Javascript字符串连接在一起(而不是+):在某些情况下,它可以避免类型混淆等问题。

答案 8 :(得分:1)

以下是两种方法:

<script type="text/javascript">
    var s="http://localhost/dms/mduserSecurity/UIL/index.php?menu=true&submenu
                                =true&pcode=1235";

    var st=s.substring(0, s.indexOf("?"));

    alert(st);

    alert(s.replace(/\?.*/,''));
</script>

答案 9 :(得分:1)

这个怎么样:location.href.slice(0, - ((location.search + location.hash).length))

答案 10 :(得分:1)

private static cucumberReporterOptions = { theme: 'bootstrap' as const, ....

答案 11 :(得分:0)

使用window.location

的属性
var loc = window.location;
var withoutQuery = loc.hostname + loc.pathname;
var includingProtocol = loc.protocol + "//" + loc.hostname + loc.pathname;

您可以在https://developer.mozilla.org/en/DOM/window.location

看到更多属性

答案 12 :(得分:0)

这是使用URL() interface的一种方法:

new URL(location.pathname, location.href).href

答案 13 :(得分:0)

只需将这两行添加到$(document).ready中,如下所示:

$(document).ready(function () {
 $("div.sidebar nav a").removeClass("active");
        $('nav a[href$="'+ window.location.pathname.split("?")[0] +'"]').addClass('active');
});

最好使用美元符号($)(以结尾)

$('nav a[href$

代替(^)(开头)

$('nav a[href^

因为,如果您使用(^)号,并且在导航菜单中嵌套了URL(例如“ / account”和“ / account / roles”)

它将同时激活它们。

答案 14 :(得分:0)

如果您使用点网核心3.1,则它支持大小写忽略路由,因此,如果溃败点是小写字母,并且用户使用大写字母写出溃败点,则前一种方法没有帮助。 / p>

因此,以下代码非常有帮助:

$(document).ready(function () {
    $("div.sidebar nav a").removeClass("active");
    var urlPath = window.location.pathname.split("?")[0];
    var nav = $('div.sidebar nav a').filter(function () {
        return $(this).attr('href').toLowerCase().indexOf(urlPath.toLocaleLowerCase()) > -1;
    });
    $(nav).each(function () {
        if ($(this).attr("href").toLowerCase() == urlPath.toLocaleLowerCase())
            $(this).addClass('active');
    });
});