7

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

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

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

例如:* http://server/website/ *Login.aspx

如何在 javascript 中获取此网址?

非常感谢,

英巴尔。

4

8 回答 8

11

我会使用 window.location.origin。它将为您返回第一部分,然后只需对父 url 进行 Uri 编码,就完成了!

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

window.location.href = loginUrl;

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

于 2013-09-18T08:53:11.827 回答
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;
于 2013-01-03T08:51:29.470 回答
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 中)到服务器/网站/页面。

于 2013-01-03T08:55:17.327 回答
1

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

因此,您必须将其从服务器传递到客户端。你不妨一次通过“http://server/website”。

于 2013-01-03T08:55:10.973 回答
0

此函数将返回当前 url 的根(基本)URL。

你有类似的东西: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:获取基本 URL 或根 URL

于 2015-01-05T16:43:44.027 回答
0
function homepage_of(url) { 
    var arr = url.replace('//','@@').split("/");
    return arr[0].replace('@@','//');
}
于 2019-10-26T12:02:05.443 回答
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

于 2017-04-03T01:21:10.633 回答
0

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

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

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

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

于 2016-09-07T09:37:00.850 回答