JavaScript 中图像的相对路径

2023-12-23

我有一个 javascript 模块,它创建一个带有关闭按钮(“X”)图片的 div。 这个 div 和 javascript 被放置在我网站上的很多地方。

相对路径解决方案:当页面包含 javascript,并且 javascript 对图像使用相对路径时。相对路径是相对于 HTML 页面的。如果不同路径中的 HTML 页面使用此 javascript,我将需要 2 个不同的图像。

绝对路径解决方案:我不知道我的团队成员使用什么服务器进行开发(我确定他不是在我的服务器上开发)。这意味着绝对路径将不起作用。

有没有一种简单的方法可以解决这个问题?就像让脚本以某种方式知道它的路径?


可变路径(测试/临时/生产域)始终是 JavaScript 中的一个问题,最好的选择是在 HTML 中包含应用程序/网站的根路径。执行此操作的明显位置是在模板层中。例如:

<body data-root="${rootContext}">
<!-- or whatever syntax your template layer uses -->

并使用 javascript 获取它以便在您的脚本中使用。

var rootContext = document.body.getAttribute("data-root");

注意,只有当 DOM 准备好时(或者 document.body 可用时,跨浏览器有所不同),您才能执行此操作;)

在我看来,另一种不太漂亮的选择是简单地渲染 javascript。

<script>
    var rootContext = ${rootContext} // or whatever syntax your template layer uses.
</script>

至少使用“数据根”技术,您可以将值存储在您喜欢的任何位置并避免全局定义。

因此,在引用图像的代码中,您可以执行以下操作:

img.src = rootContext + "/media/js/close.gif";

或者创建一个很好的辅助方法:

 // lets use a namespace to avoid globals.
 var myApp = {
     // still need to set this when DOM/body is ready
     rootContext: document.body.getAttribute("data-root"),
     getContext: function( src ) {
         return this.rootContext + src;
     }
 }

img.src = myApp.getContext( "/media/js/close.gif" );

在辅助方法中,您还可以编写一些代码来确保正确使用 / 等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 中图像的相对路径 的相关文章

随机推荐