繁体   English   中英

在 javascript 中获取根网站 url 以进行重定向

[英]Get root website url in javascript for redirect

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

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

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

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

我怎样才能在 javascript 中获取这个 url?

非常感谢,

英巴尔。

我会使用window.location.origin。 它会为你返回第一部分,然后只是 Uri 编码父 URL 就完成了!

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

window.location.href = loginUrl;

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

为什么使用 ~ ? 乍一看,我会说删除它可以解决您的问题。 像这样。

   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;
function getURL() { 
    var arr = window.location.href.split("/"); 
    delete arr[arr.length - 1]; 
    return arr.join("/"); 
}

你可以这样使用它:

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

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

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

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

此函数将返回当前 url 的根 (base) 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

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

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

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

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

我修改了 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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM