I have a redirect script located here: http://www.devicedetect.co/redirect.js.php it is a redirect script which is working fine for 90% of mobiles however some android phones including the new samsung galaxy s3 it is not redirecting when being used. If you can fix this let me know a price and the job is yours.
That's probably because it detects the screen size in pixels, some browsers fake larger sizes than they can actually display.
Try something like (function (a, b) { if (/android|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(ad|hone|od)|iris|kindle|lge |maemo|meego.+mobile|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) window.location = b })(navigator.userAgent || navigator.vendor || window.opera, 'http://google.com'); Code (markup): replace google.com with your own URL
Thanks for that, I need to work with what I have though as it allows me to call the script from my main site with a get variable telling the script where to redirect to. Also it allows me to return to the main site with ?redirect=false and a cookie will be set for 10mins so the redirect won't happen while this cookie exists.
var mobileURL = ""; var detectmobile = { redirectCallback: null, defaultMobileURL: null, mobileSiteDomainIdentifiers: ["m", "mobi"], thresholdWidthInPixels: 970, cookieName: "detectmobilesticky", forceWebParameter: "redirect=false", forceMobileParameter: "redirect=true", stripDomains: ["www", "www2", "www3", "m", "mobi"], process: function () { var a = window.location.href; var b = this.splitURLParameters(a); var c = this.readCookie(this.cookieName); if (this.forceWebParameter in b) { this.createCookie("forceWeb", "true"); this.eraseCookie("forceMobile") } if (this.forceMobileParameter in b) { this.createCookie("forceMobile", "true"); this.eraseCookie("forceWeb") } var d = this.readCookie("forceWeb"); var e = this.readCookie("forceMobile"); if (d == "true") { return } if (e == "true") { var f = this.getRedirectTarget("mobile", a); this.performRedirect(f) } if (this.detectMobile()) { var f = this.getRedirectTarget("mobile", a); this.performRedirect(f) } }, getRedirectTarget: function (a, b) { var c = null; if (this.redirectCallback) { c = this.redirectCallback(a, b) } else { if (a == "mobile") { c = this.defaultMobileURL } } if (!c) { throw "Cannot redirect to " + a + " because target URL cannot be resolved by detectmobile.js" } return c }, performRedirect: function (a) { if (a == window.location.href) { window.location.reload(); return } window.location = a }, replaceDomainName: function (a, b, c, d) { var e; if (a.substring(0, 4) != "http") { throw "Only absolute http/https URLs supported" } var f = a.split("/"); if (f.length < 2) { throw "Cannot understand:" + a } var g = f[2]; hostparts = g.split(":"); var h = hostparts[0]; for (e = 0; e < this.stripDomains.length; e++) { var i = this.stripDomains[e]; if (h.indexOf(i + ".") == 0) { h = h.substring(i.length + 1); break } } if (c) { b = b + "." + h } if (hostparts.length > 1) { hostparts = [b, hostparts[1]] } else { hostparts = [b] } var g = hostparts.join(":"); var j = [f[0], f[1], g]; for (var e = 3; e < f.length; e++) { j.push(f[e]) } return j.join("/") }, addURLParameter: function (a, b) { var c = mobilize.getUrlVars(a); var d = a.split("?", 1)[0]; d += "?"; var e = []; for (var f = 0; f < c.length; f++) { var g = c[f]; var h = c[g]; e.push(g + "=" + h) } e.push(b); d += e.join("&"); return d }, splitURLParameters: function (a) { if (!this._urlvars) { this._urlvars = {} } if (!a) { a = window.location.href } if (this._urlvars[a]) { return this._urlvars[a] } var b = [], c; if (a.indexOf("#") >= 0) { a = a.slice(0, a.indexOf("#")) } var d = a.slice(a.indexOf("?") + 1).split("&"); for (var e = 0; e < d.length; e++) { c = d[e]; b.push(c); b[c] = c } this._urlvars[a] = b; return b }, createCookie: function (a, b, c) { var d = ""; if (c) { var e = new Date; e.setTime(e.getTime() + 1800000); d = "; expires=" + e.toGMTString() } document.cookie = a + "=" + b + d + "; path=/" }, readCookie: function (a) { var b = a + "="; var c = document.cookie.split(";"); for (var d = 0; d < c.length; d++) { var e = c[d]; while (e.charAt(0) === " ") { e = e.substring(1, e.length) } if (e.indexOf(b) === 0) { return e.substring(b.length, e.length) } } return null }, eraseCookie: function (a) { this.createCookie(a, "", - 1) }, detectMobile: function () { if (navigator.userAgent) { var a = navigator.userAgent; } else if (navigator.vendor){ var a = navigator.userAgent; } else if(window.opera) { var a = window.opera; } else { return false; } if (/android|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(ad|hone|od)|iris|kindle|lge |maemo|meego.+mobile|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) { return true; } else { return false; } }, getScreenDimensions: function () { return { width: window.screen.availWidth, height: window.screen.availHeight } }, isOnMobileSite: function () { var a = window.location.hostname; var b = a.split("."); for (var c = 0; c < b.length; c++) { for (var d = 0; d < this.mobileSiteDomainIdentifiers.length; d++) { if (b[c] == this.mobileSiteDomainIdentifiers[d]) { return true } } } return false } }; detectmobile.defaultMobileURL = mobileURL; detectmobile.process(); Code (markup): That outta do it