0

我有一个使用 URL 重写的站点,因此我必须直接引用资源,而不是通过相对 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 反映当前 url。如何获取 javascript 文件的 SITE_URL 常量?

4

1 回答 1

0

您可以设置一个虚拟主机,将其指向包含 index.php(您的公用文件夹)的项目文件夹,然后将所有引用更改为绝对(即..e this.fileLoadingImage = '/images/loading.gif')。

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

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

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

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

于 2013-02-03T23:29:38.853 回答