2013-02-03 114 views
0

我有一個網站使用URL重寫,所以我必須直接引用資源,而不是通過相對URL。我通常通過將網站url附加到href的開頭來完成此操作。燈箱包含圖像通過URL

例子:

<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反映了當前的URL爲每config.php文件。我怎樣才能得到SITE_URL常量的JavaScript文件?

+0

我會在我的頁面的ondocumentready中初始化我的燈箱腳本,並將相關選項傳遞給初始化,例如, 'initLightbox({baseurl:<?php echo json_encode($ site_url)?>}};'(編輯過的:使用json_encode()添加引號和轉義斜線) – thaJeztah

回答

0

您可以設置一個virtual host,將其指向包含index.php(您的公用文件夾)的項目文件夾,然後將所有引用更改爲絕對(i..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> 

雖然我不肯定這是一個非常好的做法。

+0

這個var SITE_URL在它後面的Lightbox.js文件中是否可用已包括在內?該變量是否在全局範圍內註冊? – Sam

+0

是的,沒錯。只要此腳本在lightbox之前被「包含」(即將