高级全局重定向

时间:2013-04-23 22:40:04

标签: javascript jquery

以下是我的代码,该代码适用于编辑基于位置将用户发送到网站的链接,但我想以两种方式扩展此代码:

$(window).load(function () {
    $.getJSON('http://api.wipmania.com/jsonp?callback=?', function (data) {
        var country = data.address.country;
        var urls = {
            'Australia': 'www.website.com.au',
            'New Zealand': 'www.website.co.nz'
        }
        var locstring = "/contact_us.html";
        var locstring2 = "/about_us.html";
        var cchUrl = 'www.website.com';
        if(urls[country]) {
            cchUrl = urls[country];
        }
        //alert(cchUrl);
        $("#global").attr('href', 'http://' + cchUrl + locstring);
        $("#global2").attr('href', 'http://' + cchUrl + locstring2);
    });
});

<a href="http://www.website.com/contact_us.html" id="global" target="_blank">Contact Us</a>

<a href="http://www.website.com/about_us.html" id="global2" target="_blank">About Us</a>
  1. 正如您所看到的,我必须设置两个变量(locstring,locstring2)和两个id(global,global2)来将用户发送到两个不同的位置,是否可以使用id global来更改域,但域后的路径无关紧要。我想简化代码,所以www.thiswillchange.com/thiswontchange使用一个ID,而不是设置多个ID&amp;不同链接的变量。

  2. 作为一个不同的项目,我可以使用此代码(使用第1点的更改)来创建“页面加载”,以便用户例如浏览页面www.website.co.nz/ contact_us.html它会检测到它们来自澳大利亚并将它们发送到www.website.com.au/contact_us.html网站,反之亦然,或者需要采用完全不同的方法。

  3. 请记住,我可能希望将来在列表中添加更多国家/地区,因为我会添加更多网站。

    编辑:也许我应该详细说明链接在国际斜杠页面上的文本,没有菜单,我只是使用全局重定向来更改链接域以将用户发送到正确的网站以获取位置然后是页面的路径。

2 个答案:

答案 0 :(得分:1)

我不知道这对你是否可行,但你可以从javascript构建菜单,而不是编写html然后更改它。 这样,您还可以轻松添加更多菜单项,而无需更改html并引入更多全局变量。

$(window).load(function () {
    $.getJSON('http://api.wipmania.com/jsonp?callback=?', function (data) {

        var country = data.address.country;
        var urls = {
            'Australia': 'www.website.com.au',
            'New Zealand': 'www.website.co.nz'
        };

        var menu = {
            'Contact Us'  : '/contact_us.html',
            'About Us'    : '/about_us.html'
        };

        var cchUrl = 'www.website.com';
        if (urls[country]) {
            cchUrl = urls[country];
        }
        for(name in menu){
            $('#menu').append($('<a/>',{'text':name,'href':'http://'+cchUrl+'/'+menu[name]}));
        }

    });
});

<div id="menu"></div>

接下来尝试:
这里所有的链接都是同一个类。然后,每个人的href中的域将被cchUrl替换。

$(window).load(function () {
    $.getJSON('http://api.wipmania.com/jsonp?callback=?', function (data) {
        var country = data.address.country;
        var urls = {
            'Australia': 'www.website.com.au',
            'New Zealand': 'www.website.co.nz'
        }

        var cchUrl = 'www.website.com';
        if(urls[country]) {
            cchUrl = urls[country];
        }

        $('.global').each(function(){
            var href = $(this).attr('href');
            $(this).attr('href', href.replace(/http:\/\/.*?\//,'http://'+cchUrl+'/'));
        });
    });
});

<a href="http://www.website.com/contact_us.html" class="global" target="_blank">Contact Us</a>
<a href="http://www.website.com/about_us.html" class="global" target="_blank">About Us</a>

答案 1 :(得分:0)

function update(id, domain) {
    var old = $(id).attr('href')
    $(id).attr('href', old.replace(/http:\/\/.+?\/(.*?)/, 'http://'+domain+'/$1'))
}
update("#global", cchUrl)