2011-12-23 87 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