javascript - 获取脚本路径

标签 javascript css

在 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/

相关文章:

html - 开始 Html/CSS 两列网页设计(填充和边框问题)

javascript - 带图标的全屏导航覆盖

javascript - JavaScript 的 getYear() 和 getFullYear() 函数有什么区别?

Javascript 动画问题 - 过渡不工作

css - Bootstrap 下拉扩展下拉列表(嵌套)

javascript - 仅当发生错误时调用显示错误消息的div

php - 使用后期处理上传进度

javascript - 访问 IFRAME 中的属性的权限被拒绝

javascript - 在布局顶部保留自定义 div,同时允许用户浏览网站

javascript - 如何将日期转换为 GMT?