重定向审核

时间:2011-04-19 20:39:44

标签: javascript mobile user-agent

想要查看是否有人对此脚本有反馈意见,以便重定向移动用户,并将其发送到另一个网站上的正确页面。我还在重定向上写了一个cookie,所以我可以尝试恢复一些分析信息。

    (function() {
    var REFERER_COOKIE_NAME = 'acme-url-referer';
    var MOBILE_REDIRECT_COOKIE_NAME = 'acme-is-mobile-redirect';
    var MOBILE_SITE_URL = 'http://acmemobile.domain.net/';

    var devices = [
        {ua:/iphone/i, redirect:1},
        {ua:/ipod/i, redirect:1},
        {ua:/android/i, redirect:1},
        {ua:/blackberry/i, redirect:1},
        {ua:/iemobile/i, redirect:1},
        {ua:/symbianos/i, redirect:1},
        {ua:/palmos/i, redirect:1},
        {ua:/ipad/i, redirect:0}
    ];

    var shouldRedirect = function() {
        for (var i = 0; i < devices.length; i++) {
            if (new RegExp(devices[i].ua).test(navigator.userAgent || '')) {
                return true;
            }
        }
        return false;
    };

    if (!shouldRedirect()) {
        return;
    }

    // URLs sorted from the lowest to the deepest url depth
    var URLs = [
        {full:'http://www.acme-big-site.com/US-EN/Home', mobile:'http://acmemobile.domain.net'},
        {full:'', mobile:''},
        {full:'', mobile:''},
        {full:'', mobile:''},
        {full:'', mobile:''},
        {full:'', mobile:''}
    ];

    var createReferrerCookie = function() {
        var ref = document.referrer;
        document.cookie = REFERER_COOKIE_NAME + '=' + encodeURIComponent(ref);
    };

    var createMobileRedirectCookie = function() {
        var expirationDate = new Date();
        expirationDate.setHours(expirationDate.getHours()+2);
        document.cookie = MOBILE_REDIRECT_COOKIE_NAME + '=1; expires=' + expirationDate.toUTCString();  
    };

    createReferrerCookie();
    createMobileRedirectCookie();

    for (var i = 0; i < URLs.length; i++) {
        if (URLs[i].full.indexOf(window.location.href) >= 0) {
            window.location.href = URLs[i].mobile;
            return;
        }
    }

    window.location.href = MOBILE_SITE_URL;

})();

0 个答案:

没有答案