我有一个使用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文件中?
答案 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>
虽然我不确定这是一个非常好的做法。