链接不同Web文件夹中的图像/文件的最佳实践

时间:2013-11-01 10:05:53

标签: javascript php jquery html css

可能标题没有任何意义,所以我会详细解释我的问题。

假设我有www.mysite.com,其中我有div的背景图片,onclick(),div改变背景图片。一切都很好。当我有子文件夹时,问题开始,例如,myblog。它看起来像www.example / myblog / post1.php。在post1我有相同的背景相同的div,但是onclick它不起作用,因为链接是目标img,它不存在。

在第一种情况下,jquery可以做到这一点:www.mysite.com/assets/img/picture.jpg(这是实际位置)

在第二种情况下,jquery正在添加以下链接:www.mysite.com/myblog/assets/img/picture.jpg 代码很简单,就像你想象的那样。 onclick做

$('#div').css("background-image", "url("assets/img/picture.jpg")"); 

所以,当我添加../assets/img/picture.jpg时,事情会起作用,但它在根目录中不起作用。

我尝试过使用url + assets / img / picture.jpg,但我得到www.mysite.com/www.mysite.com/...etc (是的网址是正确的。)

所以我的问题是,如何处理这个问题?包括像页眉和页脚一样。如果我在root上有“include”文件夹,如果我在/blog/post1.php中,我就无法链接到它。我一直在努力解决这个问题,所以我想得到一些提示。

如果它有任何区别,我正在使用codeigniter ....

谢谢!!

2 个答案:

答案 0 :(得分:1)

每当我将文件引用打印到页面中时,我会相对于根地址打印它:

要包含文件http://mysite.com/assets/img/picture.jpg,我会使用/assets/img/picture.jpg引用。因此,浏览器将从根(/)页面开始查找此文件。

如果将整个网站移动到另一个文件夹,这将是一个问题。这就是我为每个应用程序设置全局设置的原因,即“路径”设置。

E.g。应用程序http://mysite.com/app1/具有“path”设置=“app1”。当我打印一个页面的文件引用时,我会考虑这个设置,如:

$file_path = "assets/img/picture.jpg";    
echo "/$site_path/$file_path";

这将打印/app1/assets/img/picture.jpg。如果由于某种原因我需要在http://mysite2.com/anotherappname/中再次安装此应用程序,我只需将全局路径设置更改为“anotherappname。

答案 1 :(得分:0)

我通常在PHP中设置$domain的变量,看起来像http://www.example.com/(注意尾部斜杠)。然后,我echo将此变为Javascript变量,如下所示:

<script>
var domain = '<?php echo $domain; ?>';
</script>

此变量随后也可在Javascript中使用。我可能会这样使用它:

<script>
$('#div').css("background-image", "url('" +domain + "assets/img/picture.jpg')");
</script>

如果您需要更改$domain,则更改会逐步显示到您的Javascript,这很方便。