0

以下は、場所に基づいてユーザーを Web サイトに送信するリンクを編集するためにうまく機能している私のコードですが、このコードを 2 つの方法で拡張したいと思います。

$(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. ご覧のとおり、ユーザーを 2 つの異なる場所に送信するために 2 つの変数 (locstring、locstring2) と 2 つの ID (global、global2) をセットアップする必要がありました。id global を使用してドメインを変更することはできますが、変更はできません。ドメインの後にどのパスが来るかは関係ありません。www.thiswillchange.com/thiswontchange は、リンクごとに複数の ID と変数を設定するのではなく、1 つの ID を使用してコードを単純化したいと考えています。

  2. 別のプロジェクトとして、このコードを (ポイント 1 からの変更を使用して) 使用して「オンページ ロード」を作成できます。たとえば、ユーザーがページ www.website.co.nz/contact_us.html にアクセスすると彼らがオーストラリア出身であることを検出し、www.website.com.au/contact_us.html サイトに送信したり、その逆に送信したり、まったく異なるアプローチが必要になる場合があります。

将来、サイトを追加するにつれて、リストに国を追加する可能性があることを覚えておいてください.

編集:リンクが国際的なスラッシュページのテキストにある場合は、もう少し詳しく説明する必要があるかもしれません。メニューはありません。グローバルリダイレクトを使用してリンクドメインを変更し、ユーザーを正しいWebサイトに送信してから、ページへのパス。

4

2 に答える 2

1

それが実現可能かどうかはわかりませんが、html を記述してから変更する代わりに、javascript からメニューを作成できます。そうすれば、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>
于 2013-04-23T22:58:43.033 に答える