簡體   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