在 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>
上面的tag是通常的方法,是的。
然而,你通常不需要太努力地搜索:当你在脚本主体中时 — 在包含时间运行 — 你很清楚哪个<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>
)。然而,目前这种方法很少被使用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)