基于local / prod的Javascript URL

时间:2014-02-23 11:25:09

标签: javascript

我想在Javascript中引用域名,在我的本地环境中http://localhost/projecthttp://www.project.com(或https取决于页面)。我目前正在定义2个全局变量,一个用于链接到其他非https页面(我不想使用当前页面可能是https的事实),另一个用于检测页面是否为https,在没有不安全元素警告的情况下加载资源。

本地版本:

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

产品版本:

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框架。

感谢您的投入!

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

您可以使用location.href(包含当前页面的完整网址)来检查您当前的环境(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/';
    }
}