可变路径(测试/暂存/生产域)在JavaScript中始终是个问题,最好的选择是在HTML中包含您的应用程序/网站的根路径。显然,在模板层中执行此操作是最合适的位置。例如:
<body data-root="${rootContext}">
<!
使用JavaScript抓取它以便在脚本中使用。
var rootContext = document.body.getAttribute("data-root");
请注意,只有在DOM准备就绪时(或者document.body可用时,跨浏览器存在差异)才能执行此操作;)
另一个选择,但我认为不太优美的选择是简单地呈现javascript。
<script>
var rootContext = ${rootContext} // or whatever syntax your template layer uses.
</script>
至少使用“data-root”技术,您可以将值存储在任何您喜欢的位置,并避免全局定义。
因此,在您引用图像的代码中,您可以执行以下操作:
img.src = rootContext + "/media/js/close.gif";
或者创建一个很好的辅助方法:
var myApp = {
rootContext: document.body.getAttribute("data-root"),
getContext: function( src ) {
return this.rootContext + src;
}
}
img.src = myApp.getContext( "/media/js/close.gif" );
在这个辅助方法中,您还可以编写一些代码来确保正确使用斜杠等符号。
<base>
? - Felix