2014-02-23 26 views
1

我想引用在Javascript的域名基地,這將在我的本地環境http://localhost/projecthttp://www.project.com(或https取決於頁面)。我目前正在定義2個全局變量,其中一個用於指向其他非https頁面的鏈接(我不想使用當前頁面可能爲https的事實),另一個用於查看頁面是否爲https,在沒有不安全元素警告的情況下加載資源。Javascript URL基於本地/ prod

本地版本:

var link_base_url = 'http://localhost/project/'; //for links to other non-secure pages 
if(window.location.protocol == 'https:') var base_url = 'http://localhost/project/'; //SSL version for displaying resources or calling ajax scripts 
else var base_url = 'http://localhost/project/'; //non-SSL version for displaying resources or calling ajax scripts 

PROD版本:

var link_base_url = 'http://www.project.com/'; //for links to other non-secure pages 
if(window.location.protocol == 'https:') var base_url = 'https://www.project.com/'; //SSL version for displaying resources or calling ajax scripts 
else var base_url = 'http://www.project.com/'; //non-SSL version for displaying resources or calling ajax scripts 

我JavaScript的專家,但我想,這大概不是做最徹底的方法:它迫使我改變這些每次我想部署這個腳本的代碼行很少,並且從我理解的使用全局變量來看並不是那麼好。

有沒有更好的方法來做到這一點?我沒有使用像Ember這樣的JS框架。

感謝您的意見!

+0

這樣做沒有意義。無論服務於您的內容的計算機如何,網址「/」都會引用您的主機網址。你試圖用這個來達到什麼目的? –

+0

如果我輸入「/ ajax/controller」,它只會在我們處於同一個根目錄時才起作用:因爲某些視圖可能會從子文件夾中調用,例如「/ admin/users/view」我無法輕易使用相對路徑,因爲某些函數在整個應用程序中很常見,並且使用相對路徑不能很好地工作。因此我想使用完整路徑。 – Davor

回答

0

你可以使用location.href,其中包含當前頁的完整的URL,檢查您的當前環境(http://www.w3schools.com/jsref/prop_loc_href.asp)。

var checkURL = location.href, base_url = '', link_base_url = ''; 

if (/\/\/localhost\/project\//.test(checkURL)) { 
    link_base_url = 'http://localhost/project/'; 
    if (window.location.protocol == 'https:') { 
     base_url = 'https://localhost/project/'; 
    } else { 
     base_url = 'http://localhost/project/'; 
    } 
} else { 
    link_base_url = 'http://www.project.com/'; 
    if (window.location.protocol == 'https:') { 
     base_url = 'https://www.project.com/'; 
    } else { 
     base_url = 'http://www.project.com/'; 
    } 
} 
+0

不錯,我把它簡化爲'if(/localhost/.test(location.href))'但是解決了我的問題 – Davor

0

你需要這樣的東西嗎?

var link_base_url = 'http://'+window.location.host+'/'; 
var base_url = /\.com$/.test(window.location.hostname) ? window.location.protocol+'//'+window.location.host+'/' : link_base_url; 
+0

我編輯了我的答案,請重新閱讀。 – Kiko

+0

編輯:它實際上並沒有解決我的問題,因爲我的本地URL是localhost/project,而它直接是prod上的project.com。使用位置主機不會將本地的/ project /文件夾。 – Davor

+0

我忘了那個,我的錯。 – Kiko