我希望在会话超时后从我网站的每个页面重定向到“登录”页面。 我尝试将window.location设置为登录页面:
var ParentUrl = encodeURIComponent(window.parent.location.href);
document.location.href = "~/Login.appx?ReturnUrl=" + ParentUrl;
但“〜”似乎不受支持。 我的登录页面位于我的根文件夹下。
例如: * HTTP://服务器/网站/ *的Login.aspx
如何在javascript中获取此网址?
非常感谢,
英巴尔。
答案 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);
}
答案 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('@@','//');
}