灯箱通过URL包含图像

时间:2013-02-03 23:18:13

标签: php javascript html

我有一个使用URL重写的网站,所以我必须直接引用资源而不是通过相对URL。我通常通过将网站网址附加到href的开头来完成此操作。

示例:

<script src="<?php echo SITE_URL ?>lightbox/js/lightbox.js"></script>

问题是在lightbox.js里面,图像是相对加载的:

function LightboxOptions() {
  this.fileLoadingImage = 'images/loading.gif';
  this.fileCloseImage = 'images/close.png';
  this.resizeDuration = 700;
  this.fadeDuration = 500;
  this.labelImage = "Image";
  this.labelOf = "of";
}

我意识到我可以这样做:

 this.fileLoadingImage = 'http://www.example.com/images/loading.gif';

但它不符合我从上下文中抽象资源的想法。我想要它,所以如果我修改配置文件中的站点URL,它也将显示在lightbox.js文件中。我不了解Javascript,所以这让我很沮丧。

更可接受的是:

 this.fileLoadingImage = site_url + '/images/loading.gif';

其中site_url根据config.php反映当前网址。如何将SITE_URL常量保存到javascript文件中?

1 个答案:

答案 0 :(得分:0)

您可以设置virtual host,将其指向包含index.php(您的公用文件夹)的项目文件夹,然后将所有引用更改为绝对(i..e this.fileLoadingImage = '/images/loading.gif')。< / p>

我相信这就是许多框架所做的事情。

过去,如果我需要一个特殊的php生成的javascript变量,我会将它直接放在我的scripts.php文件中的新<script>标记中:

<script src ="/js/jquery.js"></script>
...
<script>
  var SITE_URL = <?php echo $site_url; ?>;
</script>

虽然我不确定这是一个非常好的做法。