在 CSS 中,任何图像路径都是相对于 CSS 文件位置的。
f.ex 如果我将 CSS 文件放在 /media/css/mystyles.css
中并使用类似的东西
.background:url(../images/myimage.jpg);
浏览器将在 /media/images/myimage.jpg
中查找有意义的图像。
是否可以在 javascript 中做同样的事情?
F.ex 如果我包含 /media/js/myscript.js
并将此代码放在那里:
var img = new Image();
img.src = '../images/myimage.jpg';
找不到图像,因为浏览器使用 HTML 文件作为起点,而不是脚本位置。我希望能够使用脚本位置作为起点,就像 CSS 一样。 这可能吗?
最佳答案
为自己搜索 DOM <script>
上面的标签是通常的方法,是的。
但是,您通常不需要太费力地搜索:当您在脚本主体中时⟩—⟩在包含时运行⟩—⟩您非常清楚哪个<script>
你是元素:最后一个。其余的还不能解析。
var scripts= document.getElementsByTagName('script');
var path= scripts[scripts.length-1].src.split('?')[0]; // remove any ?query
var mydir= path.split('/').slice(0, -1).join('/')+'/'; // remove last filename part of path
function doSomething() {
img.src= mydir+'../images/myimage.jpeg';
}
如果您的脚本已与 <script defer>
链接,则这不成立(或者,在 HTML5 中,<script async>
)。但是,目前很少使用。
关于javascript - 获取脚本路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2161159/