View Full Version : Mobile detection function bound to click and used on a button

09-22-2011, 07:06 PM
Hi all,


I'm currently working on a landing page which will display the same on both desktop & mobile devices, which is what we "want" for now.
However, we've created an alternate registration page for mobile devices. This page can be accessed by clicking on a specific button, which has a class on it that will determine if the user is on a mobile device or not. If they are not, the normal action will occur, such as a registration popup, built specifically for desktop users.

The problem is:

I'm firstly having to use .remove to take away the class of pbx_ajax which operates the popup, so mobile users aren't affected by the popup and will continue onto the page we specially built for them. However, it seems my script is removing the class straight away, which prevents the popup from working for desktop users.
Secondly, the script doesn't actually seem to work, it simply doesn't fire, which begs the question if i've cocked up my class bind.

Code is attached below, please if anyone has any advice, do let me know as i'm at my wits end.

Oh and i'm sure you'll notice, i'm polling for when the jQuery has loaded, as the library is located at the bottom of our site (its a rather large site).

The javascript/jquery

//$(document).ready(function() {
//Global function that will detect what device the page is being viewed on
function globalDetectDevice() {
var deviceIphone = "iphone";
var deviceIpod = "ipod";

//Initialize our user agent string to lower case.
var uagent = navigator.userAgent.toLowerCase();

// Detects if the current device is an iPhone or iPod Touch.
function DetectDevice()
if (DetectIphone()) {
window.location = "/landing/register/mobile" ;
else if (DetectIpod()) {
window.location = "/landing/register/mobile" ;
else {
return false;

//Binding the above function to a class, that we can then attach to any clickable element
//As jQuery is at the bottom of page, we poll the function until jQuery has loaded, once loaded, we clear the polling using clearTimout
var bindTimer = setInterval(function() {
if ("undefined" != typeof jQuery && globalDetectDevice) {
$('.detectDevice').removeClass('pbx_ajax').bind('click', DetectDevice);
}, 50);

the html button

<a class="detectDevice pbx_ajax" title="Join Free" href="?cat=popup&amp;action=open&amp;settings=pbx_popup_register">~graphic("btn-get-started-prints-LP")</a>

thanks for any help

09-23-2011, 09:51 AM
Forgot to also mention, that the first section of my JS, which is contained within a function named: globalDetectDevice, is a mobile detection script from this site: http://www.hand-interactive.com/resources/detect-mobile-javascript.htm

Just in case there might have been any confusion on that part. I suppose where things break down is my polling & binding... although again, i'm not sure.