[英]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.