Javascript crashing Firefox 3.5.5 Windows but not Mac

Discussion in 'Design and Graphics' started by Cabbit, Nov 23, 2009.

  1. Cabbit macrumors 68020

    Cabbit

    Joined:
    Jan 30, 2006
    Location:
    Scotland
    #1
    Link to demo

    Code:
    // form validation function //
    function validate(form) {
      var name = form.name.value;
      var password = form.password.value;
      var valPassLength = password.length;
      var valUserLength = name.length;
      var nameRegex = /^[a-zA-Z0-9]+(([\'\,\.\- ][a-zA-Z0-9 ])?[a-zA-Z0-9]*)*$/;
      var passwordRegex = /^[a-zA-Z0-9]+(([\'\,\.\- ][a-zA-Z0-9 ])?[a-zA-Z0-9]*)*$/;
      if(name == "") {
        inlineMsg('name','You must enter your username.',2);
        return false;
      }
      if(!name.match(nameRegex)) {
        inlineMsg('name','You have entered an invalid username.',2);
        return false;
      }
      if (valUserLength < 7)
      {
      	inlineMsg('name','<strong>Error</strong><br />Your username appears to be too short.',2);
        return false;
      }
      if(password == "") {
        inlineMsg('password','<strong>Error</strong><br />You must enter your password.',2);
        return false;
      }
      if(!password.match(passwordRegex)) {
        inlineMsg('password','<strong>Error</strong><br />Your password appears to be invalid.',2);
        return false;
      }
      if (valPassLength < 10)
      {
      	inlineMsg('password','<strong>Error</strong><br />Your password appears to be too short.',2);
        return false;
      }
      return true;
    }
    
    function submitButton(form)
    {
    	var name = form.name.value;
    	var valUserLength = name.length;
    	var nameRegex = /^[a-zA-Z0-9]+(([\'\,\.\- ][a-zA-Z0-9 ])?[a-zA-Z0-9]*)*$/;
    	var passwordRegex = /^[a-zA-Z0-9]+(([\'\,\.\- ][a-zA-Z0-9 ])?[a-zA-Z0-9]*)*$/;
    	var password = form.password.value;
      	var valPassLength = password.length;
    	if (name == "" || !name.match(nameRegex) || valUserLength < 7 || password == "" || !password.match(passwordRegex) || valPassLength < 10) 
    	{
    		return false;
     	}
    	else
    	{
    		document.getElementById('submitBTN').innerHTML = '<button type="submit" class="submit positive"><img src="/media/siteimages/buttons/tick.png" alt=""/> Login</button>';
    	}
    }
    
    function submitButtonRTN(form)
    {
    	var name = form.name.value;
    	var valUserLength = name.length;
    	var nameRegex = /^[a-zA-Z0-9]+(([\'\,\.\- ][a-zA-Z0-9 ])?[a-zA-Z0-9]*)*$/;
    	var passwordRegex = /^[a-zA-Z0-9]+(([\'\,\.\- ][a-zA-Z0-9 ])?[a-zA-Z0-9]*)*$/;
    	var password = form.password.value;
      	var valPassLength = password.length;
    	if (name == "" || !name.match(nameRegex) || valUserLength < 7 || password == "" || !password.match(passwordRegex) || valPassLength < 10) 
    	{
    	    document.getElementById('submitBTN').innerHTML = '<button type="submit" class="submit negative"><img src="/media/siteimages/buttons/cross.png" alt=""/> Login</button>';
    	}
    }
    
    // START OF MESSAGE SCRIPT //
    
    var MSGTIMER = 20;
    var MSGSPEED = 5;
    var MSGOFFSET = 3;
    var MSGHIDE = 3;
    
    // build out the divs, set attributes and call the fade function //
    function inlineMsg(target,string,autohide) {
      var msg;
      var msgcontent;
      if(!document.getElementById('msg')) {
        msg = document.createElement('div');
        msg.id = 'msg';
        msgcontent = document.createElement('div');
        msgcontent.id = 'msgcontent';
        document.body.appendChild(msg);
        msg.appendChild(msgcontent);
        msg.style.filter = 'alpha(opacity=0)';
        msg.style.opacity = 0;
        msg.alpha = 0;
      } else {
        msg = document.getElementById('msg');
        msgcontent = document.getElementById('msgcontent');
      }
      msgcontent.innerHTML = string;
      msg.style.display = 'block';
      var msgheight = msg.offsetHeight;
      var targetdiv = document.getElementById(target);
      targetdiv.focus();
      var targetheight = targetdiv.offsetHeight;
      var targetwidth = targetdiv.offsetWidth;
      var topposition = topPosition(targetdiv) - ((msgheight - targetheight) / 2);
      var leftposition = leftPosition(targetdiv) + targetwidth + MSGOFFSET;
      msg.style.top = topposition + 'px';
      msg.style.left = leftposition + 'px';
      clearInterval(msg.timer);
      msg.timer = setInterval("fadeMsg(1)", MSGTIMER);
      if(!autohide) {
        autohide = MSGHIDE;  
      }
      window.setTimeout("hideMsg()", (autohide * 1000));
    }
    
    // hide the form alert //
    function hideMsg(msg) {
      var msg = document.getElementById('msg');
      if(!msg.timer) {
        msg.timer = setInterval("fadeMsg(0)", MSGTIMER);
      }
    }
    
    // face the message box //
    function fadeMsg(flag) {
      if(flag == null) {
        flag = 1;
      }
      var msg = document.getElementById('msg');
      var value;
      if(flag == 1) {
        value = msg.alpha + MSGSPEED;
      } else {
        value = msg.alpha - MSGSPEED;
      }
      msg.alpha = value;
      msg.style.opacity = (value / 100);
      msg.style.filter = 'alpha(opacity=' + value + ')';
      if(value >= 99) {
        clearInterval(msg.timer);
        msg.timer = null;
      } else if(value <= 1) {
        msg.style.display = "none";
        clearInterval(msg.timer);
      }
    }
    
    // calculate the position of the element in relation to the left of the browser //
    function leftPosition(target) {
      var left = 0;
      if(target.offsetParent) {
        while(1) {
          left += target.offsetLeft;
          if(!target.offsetParent) {
            break;
          }
          target = target.offsetParent;
        }
      } else if(target.x) {
        left += target.x;
      }
      return left;
    }
    
    // calculate the position of the element in relation to the top of the browser window //
    function topPosition(target) {
      var top = 0;
      if(target.offsetParent) {
        while(1) {
          top += target.offsetTop;
          if(!target.offsetParent) {
            break;
          }
          target = target.offsetParent;
        }
      } else if(target.y) {
        top += target.y;
      }
      return top;
    }
    
    // preload the arrow //
    if(document.images) {
      arrow = new Image(7,80); 
      arrow.src = "/media/login/msg_arrow.gif"; 
    }
    My ere Javascript seems to crash my friends Firefox but runs fine on my Safari, Firefox, Internet Exploder(Wine), and Opera. Is there a reason it would only effect his Firefox(Windows, both 3.5.5) i am dead new to this ere javascirpt stuff i was just working in my own scripts into those from a tutorial.
     
  2. elitesouth macrumors member

    elitesouth

    Joined:
    Nov 24, 2009
    Location:
    Savannah GA
    #2
    I've had js issues in Firefox for Windows in the past... ask your friend to downgrade their version and see what results you get.
     

Share This Page