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