Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何始终解析相对于我的web应用程序根目录的URL?_Javascript_Asp.net_Url_Reference - Fatal编程技术网

Javascript 如何始终解析相对于我的web应用程序根目录的URL?

Javascript 如何始终解析相对于我的web应用程序根目录的URL?,javascript,asp.net,url,reference,Javascript,Asp.net,Url,Reference,我有一个web应用程序,它是一个JavaScript文件,将包含以下代码行: var arrowimages = { down: ['downarrowclass', 'images/AppNavDownArrow.gif', 23], right: ['rightarrowclass', 'images/AppNavRightArrow.gif'] } 当我在web应用程序的根目录下时,对图像的引用按预期工作。当我浏览到应用程序中的子文件夹时,它会将相同的子文件夹添加到图像URL,并且不会加

我有一个web应用程序,它是一个JavaScript文件,将包含以下代码行:

var arrowimages = { down: ['downarrowclass', 'images/AppNavDownArrow.gif', 23], right: ['rightarrowclass', 'images/AppNavRightArrow.gif'] }
当我在web应用程序的根目录下时,对图像的引用按预期工作。当我浏览到应用程序中的子文件夹时,它会将相同的子文件夹添加到图像URL,并且不会加载


如何修改代码,使其在我位于应用程序的子文件夹中时指向创建图像路径?

使用/images/AppNavDownArrow.gif而不是images/AppNavDownArrow.gif。

使用/images/AppNavDownArrow.gif而不是images/AppNavDownArrow.gif。

您应该使用/。这样,路径将始终从域根解析

var arrowimages = { down: ['downarrowclass', '/images/AppNavDownArrow.gif', 23], right: ['rightarrowclass', '/images/AppNavRightArrow.gif'] }
否则,它们将相对于当前URL进行解析;通过将路径固定到当前文件夹的末尾,除非您正在使用,如果正在使用,请将其删除

如果你的应用程序位于子文件夹中,例如,那么你需要在路径前面加上myapp,例如/myapp/images/AppNavDownArrow.gif

对于一个可移植的解决方案,您可能需要考虑配置参数来存储应用程序的根。然后,您可以将此参数输出到JavaScript中的配置对象中。您的URL将如下所示

var arrowimages = { down: ['downarrowclass', config.base + '/images/AppNavDownArrow.gif', 23], right: [config.base + '/rightarrowclass', '/images/AppNavRightArrow.gif'] } 

你应该用/引导路径。这样,路径将始终从域根解析

var arrowimages = { down: ['downarrowclass', '/images/AppNavDownArrow.gif', 23], right: ['rightarrowclass', '/images/AppNavRightArrow.gif'] }
否则,它们将相对于当前URL进行解析;通过将路径固定到当前文件夹的末尾,除非您正在使用,如果正在使用,请将其删除

如果你的应用程序位于子文件夹中,例如,那么你需要在路径前面加上myapp,例如/myapp/images/AppNavDownArrow.gif

对于一个可移植的解决方案,您可能需要考虑配置参数来存储应用程序的根。然后,您可以将此参数输出到JavaScript中的配置对象中。您的URL将如下所示

var arrowimages = { down: ['downarrowclass', config.base + '/images/AppNavDownArrow.gif', 23], right: [config.base + '/rightarrowclass', '/images/AppNavRightArrow.gif'] } 

虽然您可以在路径前面加上/以映射到域根,但域根并不总是等于ASP.NET中的应用程序根。如果开发环境的结构与生产环境不匹配,那么脚本也会变得脆弱

相反,请使用:

var arrowImages = { down: ['downarrowclass', '<%= Page.ResolveClientUrl("~/images/AppNavDownArrow.gif") %>', 23], right: ['rightarrowclass', '<%= Page.ResolveClientUrl("~/images/AppNavRightArrow.gif")  %>'] }

虽然您可以在路径前面加上/以映射到域根,但域根并不总是等于ASP.NET中的应用程序根。如果开发环境的结构与生产环境不匹配,那么脚本也会变得脆弱

相反,请使用:

var arrowImages = { down: ['downarrowclass', '<%= Page.ResolveClientUrl("~/images/AppNavDownArrow.gif") %>', 23], right: ['rightarrowclass', '<%= Page.ResolveClientUrl("~/images/AppNavRightArrow.gif")  %>'] }

那是行不通的。我的应用程序URL是http://www.mydomain.com/myapp,我的应用程序中图像文件夹的URL为http://www.mydomain.com/myapp/images. 当我将/添加到URL的开头时,它会返回到网站根目录而不是我的应用程序根目录。请将这些细节添加到原始问题中,以便更好地准确解释您的想法need@MichaelKniskern:查看我的更新。您必须在URL中包含/myapp,或更高级的内容,如我的更新答案。谢谢。我将此解决方案与you link中提供的解决方案结合使用,以获得一个可移植的解决方案。这正是我想要的。我希望我早知道/在解析到域根的路径的开头。谢谢大家!!那是行不通的。我的应用程序URL是http://www.mydomain.com/myapp,我的应用程序中图像文件夹的URL为http://www.mydomain.com/myapp/images. 当我将/添加到URL的开头时,它会返回到网站根目录而不是我的应用程序根目录。请将这些细节添加到原始问题中,以便更好地准确解释您的想法need@MichaelKniskern:查看我的更新。您必须在URL中包含/myapp,或更高级的内容,如我的更新答案。谢谢。我将此解决方案与you link中提供的解决方案结合使用,以获得一个可移植的解决方案。这正是我想要的。我希望我早知道/在解析到域根的路径的开头。谢谢大家!!