0

我有一个 div 开头如下:

<div id="info_picture" style="background-image: url('assets/img/channels/banners/3')"></div>

图像没有文件扩展名的原因是它可以由用户上传,我不想将扩展名存储在数据库中(或强制他们只使用一种图像格式)。我有一行 javascript 可以更改此背景图像:

info_picture.style.backgroundImage = "url('assets/img/channels/banners/"+channel+"')";

但是,在检查元素时,背景图像样式显示为绝对路径,而不是我在脚本中指定的相对路径。这是一个问题,因为没有扩展,这会导致它与 application/octet-stream 一起传输。然后 chrome 发出警告,图像不显示。如何强制它加载相对路径而不是绝对路径?

4

2 回答 2

1

我的直觉说这不是javascript问题或浏览器问题。

问题可能出在实际文件中,该文件实际上具有 application/octet-stream 作为 mime 类型。

如果我是你,

  1. 我不会使用资产目录来提供图像。我的选择至少是 public/images 目录。资产不是用于动态文件,而是用于静态文件。

  2. 如果图像是从没有扩展名的服务器提供的,我会通过控制器正确设置 mime 类型来从应用程序提供图像,猜测你使用 rails。

于 2013-02-09T04:54:31.177 回答
0

我不知道您的文件夹结构,但您可以使用“../”来表示您希望从执行代码的位置相对上升的每个文件夹。

尝试:

info_picture.style.backgroundImage = "url('../assets/img/channels/banners/"+channel+"')";

看看路径将如何变化。

于 2013-02-09T04:57:37.833 回答