0

次のように始まる div があります。

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

画像にファイル拡張子がない理由は、ユーザーがアップロードできるためであり、拡張子をデータベースに保存したくない (または、1 つの画像形式のみを使用するように強制する) ことはありません。この背景画像を変更する JavaScript の行があります。

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

ただし、要素を調べると、背景画像のスタイルは、スクリプトで指定した相対パスではなく、絶対パスとして表示されます。拡張子がないと、アプリケーション/オクテットストリームで転送されるため、これは問題です。その後、クロムは警告を表示し、画像は表示されません。絶対パスではなく相対パスを強制的にロードするにはどうすればよいですか?

4

2 に答える 2

1

私の直感では、これは JavaScript の問題でもブラウザの問題でもないと言います。

問題は実際のファイルにある可能性があり、ファイルには実際には application/octet-stream が MIME タイプとして含まれています。

もし私があなたの立場だったら、

  1. 画像を提供するためにアセットディレクトリを使用しません。私の選択は、少なくとも public/images ディレクトリです。アセットは動的ファイル用ではなく、静的ファイル用です。

  2. イメージが拡張名なしでサーバーから提供される場合、レールを使用していると推測して、コントローラーを介して MIME タイプを適切に設定することにより、アプリケーションからイメージを提供します。

于 2013-02-09T04:54:31.177 に答える
0

フォルダー構造はわかりませんが、コードを実行する場所から相対的に上に移動したいすべてのフォルダーに「../」を使用できます。

試す:

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

そして、パスがどのように変化するかを見てください。

于 2013-02-09T04:57:37.833 に答える