如何始终解析相对于我的web应用程序根的URL
How to always resolve URLs relative to my web applications root?
我有一个web应用程序,它是一个JavaScript文件,会有以下代码行:
var arrowimages = { down: ['downarrowclass', 'images/AppNavDownArrow.gif', 23], right: ['rightarrowclass', 'images/AppNavRightArrow.gif'] }
当我处于web应用程序的根目录时,对图像的引用正在按预期工作。当我浏览到应用程序中的子文件夹时,它会将相同的子文件夹添加到图像URL中,并且不会加载。
当我在应用程序的子文件夹中时,如何修改代码,使其指向创建图像路径?
您应该使用/
引导路径。这样,路径将始终从域根解析。
var arrowimages = { down: ['downarrowclass', '/images/AppNavDownArrow.gif', 23], right: ['rightarrowclass', '/images/AppNavRightArrow.gif'] }
否则,它们将被解析为相对于当前URL的;通过将路径固定到当前文件夹的末尾(除非您正在使用<base/ >
标记(如果您正在使用,请将其移除))。
如果您的应用程序位于子文件夹中(例如。http://example.com/myapp),则需要在路径前面加上myapp
,例如;/myapp/images/AppNavDownArrow.gif
。
对于可移植的解决方案,您可能需要考虑使用一个配置参数来存储应用程序的根目录(例如root = /myapp/
)。然后,您可以在JavaScript中的config
对象中输出此参数,如我的另一个答案所述。你的网址会是这样的;
var arrowimages = { down: ['downarrowclass', config.base + '/images/AppNavDownArrow.gif', 23], right: [config.base + '/rightarrowclass', '/images/AppNavRightArrow.gif'] }
使用/images/AppNavDownArrow.gif
而不是images/AppNavDownArrow.gif
。
尽管您可以在路径前面加上"/"来映射到域根,但在ASP.NET中,域根并不总是等于应用程序根。如果开发环境的结构与生产环境不匹配,还会使脚本变得脆弱。
相反,使用:
var arrowImages = { down: ['downarrowclass', '<%= Page.ResolveClientUrl("~/images/AppNavDownArrow.gif") %>', 23], right: ['rightarrowclass', '<%= Page.ResolveClientUrl("~/images/AppNavRightArrow.gif") %>'] }
这将确保您的路径指向IIS中当前应用程序上下文的根目录,无论是域根目录还是虚拟目录。
如果您不想将脚本放在页面上并将其保存在.js文件中,请在母版页/布局/其他位置创建一个指向应用程序根的变量,然后在脚本文件中引用该变量:
<script type="text/javascript">
var configuration = {
applicationRoot: '<%= Page.ResolveClientUrl("~/") %>',
currentPath: '<%= HttpContext.Current.Request.Path %>'
}
</script>
在您的脚本文件中:
var arrowImages = { down: ['downarrowclass', configuration.applicationRoot +'/images/AppNavDownArrow.gif', 23], right: ['rightarrowclass', configuration.applicationRoot +'/images/AppNavRightArrow.gif'] }
- 使用应用程序状态js和视图在angular js url上传递两个参数
- 从使用react路由器的网络应用程序解析物理URL
- 将 MVC 3 应用程序部署到 URL 文件夹已损坏 JavaScript 和内容路径
- 读取Angular应用程序中请求的url
- Facebook JavaScript SDK:读取应用程序URL
- 无法'共享'Firefox操作系统上Facebook和Twitter本地应用程序上的URL
- 在express应用程序中,请求参数两次附加到URL
- Facebook选项卡应用程序动态URL
- 获取包含我的谷歌应用程序脚本的页面的url
- 为什么使用MEAN.js应用程序'URL以#开头
- 如何从struts2应用程序中的AJAX调用url调用servlet
- 是否可以提供一个特定的URL,供任何在网络应用程序中为页面添加书签的人使用
- 有没有任何方法可以在单页应用程序中记录url和哈希片段
- 如何使用chrome文件系统api从chrome应用程序中的url下载图像
- 如何检查“http://”是否包含在 Angular .js 应用程序的 url 输入中
- 如何从MyApp Android打开Web浏览器应用程序的URL
- Facebook登录后无法重定向到应用程序URL
- RCTLinkingManager :在 iOS 中侦听应用程序 URL
- 有MS Word的应用程序URL协议吗
- 如何在每次用户在新浏览器窗口中访问应用程序 URL 时以编程方式在 IE 中创建新的浏览器会话