在javascript中获取root网站网址以进行重定向

时间:2013-01-03 08:42:38

标签: javascript asp.net window.location

我希望在会话超时后从我网站的每个页面重定向到“登录”页面。 我尝试将window.location设置为登录页面:

var ParentUrl = encodeURIComponent(window.parent.location.href);
document.location.href = "~/Login.appx?ReturnUrl=" + ParentUrl;

但“〜”似乎不受支持。 我的登录页面位于我的根文件夹下。

例如: * HTTP://服务器/网站/ *的Login.aspx

如何在javascript中获取此网址?

非常感谢,

英巴尔。

8 个答案:

答案 0 :(得分:10)

我会使用window.location.origin。它将为您返回第一部分,之后只需Uri对父网址进行编码即可完成!

var parentUrl = encodeURIComponent(window.location.href),
    loginUrl = window.location.origin+"/Login.appx?ReturnUrl=" + parentUrl;

window.location.href = loginUrl;

跨浏览器功能的一个小技巧是使用window.location。它可以在所有兼容的浏览器上读/写。虽然document.location只在某些(即)中读取。

答案 1 :(得分:2)

为什么要用〜?乍一看,我会说删除它解决了你的问题。像这样。

   document.location.href = "/Login.appx?ReturnUrl=" + ParentUrl;

[编辑]回复第一条评论......

我相信这可以解决问题:

function getLoginPage() {
    var urlParts = document.location.href.split("/");
    return "/" + urlParts[2] + "/" + urlParts[3] + "/Login.aspx";
}

document.location.href = getLoginPage() + "?ReturnUrl=" + ParentUrl;

答案 2 :(得分:2)

function getURL() { 
    var arr = window.location.href.split("/"); 
    delete arr[arr.length - 1]; 
    return arr.join("/"); 
}

你可以像这样使用它:

document.location.href = getURL() + "Login.appx?ReturnUrl=";

我的功能和第一个答案之间的区别是“/”将重定向到服务器/页面,我的代码将重定向(在您的示例URL中)到服务器/网站/页面。

答案 3 :(得分:1)

“/ website”部分通常是服务器端信息。 JavaScript无法自行确定这一点。

所以你必须将它从服务器传递到客户端。你也可以马上通过“http:// server / website”。

答案 4 :(得分:0)

此函数将返回当前网址的根(基础)网址。

你有类似的话:http://www.example.com/something/index.html 你想要:http://www.example.com/something/

function getBaseUrl() {
    var re = new RegExp(/^.*\//);
    return re.exec(window.location.href);
}

详细信息:Javascript: Get base URL or root URL

答案 5 :(得分:0)

我通常创建一个“settings.js”文件,其中存储了应用程序的一组设置。在这种情况下:

settings = { "root": "myAppRoot/" /*, ... */ };

然后在脚本中,例如我调用

myDynamicDiv.load("/" + settings.root + "urlPart1/urlPart2/app"

答案 6 :(得分:0)

我修改了PerKristian的答案,以便在我的情况下工作,

function getBaseUrl() {
    var re = new RegExp(/^.*\/\/[^\/]+/);
    return re.exec(window.location.href);
}

匹配所有内容直到第一个孤立/

例如

http://stackoverflow.com/questions/14135479/get-root-website-url-in-javascript-for-redirect

将返回http://stackoverflow.com

答案 7 :(得分:0)

function homepage_of(url) { 
    var arr = url.replace('//','@@').split("/");
    return arr[0].replace('@@','//');
}