2011-12-23 131 views
0

說我正在開發一個website.com。我需要動態獲取根(website.com)(用於開發和生產)。有沒有辦法做到這一點在JS?在Javascript中獲取網站根目錄

我在服務器上使用asp.net mvc 3。

+0

您可以使用Ajax調用從服務器 – Chibuzo 2011-12-23 20:58:46

回答

4
+0

雖然得到它這適用於這個特定的問題(根保證等於主機名),它沒有解決如何指導在其他情況下獲取根URL。 – Sam 2013-12-20 03:30:06

2

參見:

你可以串連位置協議和主機:How to extract the hostname portion of a URL in JavaScript

從鏈接引用 VAR根= location.protocol +「// '+ location.host; 的URL,讓我們說「https://stackoverflow.com/questions」,它將返回「http://stackoverflow.com

+0

你改變了你的問題嗎?我以爲你問了一個JS問題,但也許你想要一個asp.net的答案? 對於主機:'Request.Url.Host' – 2011-12-23 21:22:59

+0

你救了我的一天謝謝你:) – 2015-02-18 11:28:40

1

我創建了一個函數來獲取真正的根:

function root() { 
     var scripts = document.getElementsByTagName('script'), 
      script = scripts[scripts.length - 1], 
      path = script.getAttribute('src').split('/'), 
      pathname = location.pathname.split('/'), 
      notSame = false, 
      same = 0; 

     for (var i in path) { 
      if (!notSame) { 
       if (path[i] == pathname[i]) { 
        same++; 
       } else { 
        notSame = true; 
       } 
      } 
     } 
     return location.origin + pathname.slice(0, same).join('/'); 
    } 

調用這個函數一次當JS文件被加載。
爲了使它工作,你必須將其包含爲js文件。

用法:

var basepath = root(); 

這裏有一些例子:

location.host: 'http://test.com' 
location.path: '/myapp/controller/action/id' 

這將導致:

http://test.com/myapp