【问题标题】:Absolute path in JavaScript script tagJavaScript 脚本标签中的绝对路径
【发布时间】:2011-03-31 08:41:24
【问题描述】:

声明标签时是否有绝对路径?

如果我在文件夹中有一个 aspx 页面(一级),这将解决 脚本src="../Scripts/jquery-1.4.1.js" type="text/javascript">

如果我在文件夹中有一个 aspx 页面(两级),这将解决 脚本src="../../Scripts/jquery-1.4.1.js" type="text/javascript">

如果我在主根目录中有一个 aspx 页面,这将解决 脚本src="Scripts/jquery-1.4.1.js" type="text/javascript">

我真的需要为每个相对路径创建不同的版本吗?

【问题讨论】:

  • 您使用的是 MVC 还是 WebForms?

标签: javascript asp.net script-tag


【解决方案1】:

您可能希望使用来自域根目录的相对路径:

<script src="/Scripts/jquery-1.4.1.js" type="text/javascript">

【讨论】:

  • 这不起作用..仍然在 $(document) 上具有“预期对象”
  • @ronald-yoh: 如果Scripts 位于您的域根目录中,则应该这样:) ... 注意:如果您的Scripts 文件夹位于http://your-domain.com/mysite/Scripts/,那么您必须使用src="/mysite/Scripts/jquery-1.4.1.js"。但是,如果您的Scripts 位于http://your-domain.com/Scripts/,那么我的答案中的示例应该这样做。
【解决方案2】:

对于 ASP.NET MVC,在您的视图中使用 Url.Content("~/Scripts/jquery-1.4.1.js")。波浪号使您的路径相对于应用程序根目录,如果您作为 IIS 虚拟应用程序运行,它可能是一个子文件夹。

如果是WebForms,请在您的页面中尝试Page.ResolveUrl()VirtualPathUtility.ToAbsolute()

(顺便说一句,您可能还想考虑loading jQuery from a CDN

【讨论】:

    【解决方案3】:

    在 webforms 应用程序中引用脚本和 css 文件时,使用

    "&lt;%=ResolveUrl("~/path/file.ext") %&gt;"

    这类似于 MVC 中的"@Url.Content("~/path/file.ext")",无论它是服务器上的根应用程序还是某个虚拟目录中的根应用程序,都会将 ~(应用程序根目录)替换为应用程序基本路径。如果您使用绝对路径 (/path.file.ext),当您的应用程序位于网站的根目录时,它可能对您有用,但当您将其移动到虚拟目录时,它可能会停止解析资源。

    【讨论】:

      【解决方案4】:

      如果您需要使用 jquery,可以始终使用 一个绝对路径 到 google cdn

      http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js
      

      一个好话题:读入的相对路径和绝对路径有什么不同:

      Absolute vs relative URLs

      (巧合:我和@Daniel Vassallo 参与了这篇文章)

      【讨论】:

      • 有趣的巧合 :) ... +1 建议使用 jQuery 的 Google CDN。不过我猜这个问题会延伸到 OP 的其他脚本,所以选择了 jquery-1.4.1.js 作为示例。
      • 我在网站上有几十个不同的 javascript 文件,所以使用“ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js”只会修复一个 javascript 文件。
      【解决方案5】:

      如果您使用的是主题,那么"&lt;%=ResolveUrl("~/path/file.ext") %&gt;" 之类的代码插入似乎不是一个选项。如果你使用它们,你会得到一个例外。

      【讨论】:

        【解决方案6】:

        我更喜欢使用&lt;base&gt; 标签并根据该基本标签给予参考

        类似的东西: http://www.w3schools.com/tags/tag_base.asp

        【讨论】:

        • 我已经使用 w3schools 多年了,我很难想到我发现的任何错误。我认为他们的可靠性非常好。它们不包括许多浏览器支持的专有扩展,即使几乎每个浏览器都支持它的某种风格,所以它们在这个意义上是不完整的。至于不是 W3C 的一个分支,他们有没有说过他们是?我不认为名称中包含“sql”的每个网站都隶属于 ANSI。
        【解决方案7】:
        <script src="/Scripts/jquery-1.4.1.js" type="text/javascript">
        

        这个在网络表单中根本不起作用。 “/”不代表网站根目录。

        【讨论】:

          猜你喜欢
          • 2016-11-21
          • 2022-08-09
          • 1970-01-01
          • 2016-01-09
          • 2023-01-19
          • 1970-01-01
          • 1970-01-01
          • 2014-02-13
          • 2012-06-09
          相关资源
          最近更新 更多