Resizing font of div won't work in Chrome or Firefox

The place to talk about things that are related to CMS Made simple, but don't fit anywhere else.
Post Reply
swarfega
Forum Members
Forum Members
Posts: 174
Joined: Mon Sep 06, 2010 10:51 am

Resizing font of div won't work in Chrome or Firefox

Post by swarfega »

Hi. I have a javascript which is designed to increase and decrease the text size of a particular div so that reaaders can feel more comfortable. However it works in IE, but not firefox or chrome. My guess is that it could be using some functions that are not supported by those browsers.

Would anyone be able to modify this script so that it works in all browsers?

The javascript:

Code: Select all

/*#######################################*/ 
/*            Beta FONT SIZER                 */ 
/*#######################################*/ 
window.onload = function() { 
    _LSfontSizer.init(null); 
} 
  
origSize = new Array(); 
  
var _LSfontSizer = { 
    contentID:'content',// The outer most element of the text you want to resize 
    debug: false,        // Allow alert of tracking values 
    enabeled: true,        // Enable the fontsize tool to function single point to disable 
    maxChange: 5,         // Max number of increase/decreases in font size 
    changeCnt: 0,         // Track change counts 
    defaultSize: '14',    // NA - default font size 
    maxSize: '20',        // NA - max font size 
    minSize: '8',        // NA - minimum font size 
    curSize: null,        // loop container for current size and manipulation 
    origSizeCnt: 0,        // Track the item change count for reset value mapping 
    echo: '',            // debug value outputs 
    activeFunc: null,    // Store the active function that was called 
    init: function(call){ 
            this.echo=''; 
            this.activeFunc = call; 
            if(this.activeFunc == null) { // Setup Listeners onload 
                try { 
                    Event.add($('fntSizeInc'),'mouseup',function() { _LSfontSizer.init('add'); }); 
                    Event.add($('fntSizeDec'),'mouseup',function() { _LSfontSizer.init('dec'); }); 
                    Event.add($('fntSizeReset'),'mouseup',function() { _LSfontSizer.subSetFunc('get'); }); 
                    if(document.all) { 
                        $('fntSizeInc').style.cursor = "hand"; 
                        $('fntSizeDec').style.cursor = "hand"; 
                        $('fntSizeReset').style.cursor = "hand"; 
                    } else { 
                        $('fntSizeInc').style.cursor = "pointer"; 
                        $('fntSizeDec').style.cursor = "pointer"; 
                        $('fntSizeReset').style.cursor = "pointer"; 
                    } 
                } catch(e) {  
                    //do nothing since the fontSizer interface is not present 
                } 
                //return; //End 
            } 
  
            if(this.activeFunc=='add') { 
                if(this.changeCnt+1>this.maxChange) 
                    this.enabeled = false; 
                else { 
                    this.changeCnt++; this.enabeled = true; 
                } 
            } else if (this.activeFunc=='dec') { 
                if(this.changeCnt-1<(0-this.maxChange)) 
                    this.enabeled = false; 
                else { 
                    this.changeCnt--; this.enabeled = true; 
                } 
            } 
            if(this.enabeled) { 
                bodyObjs = $(this.contentID).childNodes; 
                for(var i=0;i<bodyObjs.length;i++){ 
                    if(bodyObjs[i].nodeType == 1)  // IE  
                        this.traverseTree(bodyObjs[i]) 
                    // END nodeType 
                } // END for loop 
                if(this.debug) alert(this.echo); 
            } 
        }, 
    set: function(obj) { 
            this.curSize = getStyle(obj.parentNode,'font-size'); 
            if( this.curSize != 'undefined' && obj.nodeName=="#text" && obj.parentNode.nodeName != "DIV") { 
                origSize.push(this.curSize); 
                this.echo += "\n\rSET DEFAULT = " + this.curSize; 
            } 
        }, 
    get: function(obj) { 
            this.curSize = origSize[this.origSizeCnt]; 
            if( this.curSize != 'undefined' && obj.nodeName=="#text" && obj.parentNode.nodeName != "DIV") { 
                    var newSize = parseInt((this.curSize.substring(0,this.curSize.length-2))) + 1; 
                    obj.parentNode.style.fontSize = newSize + this.curSize.substring(this.curSize.length-2,this.curSize.length); 
                    this.echo += "\n\rRESET TO DEFAULT:: "+this.curSize+" >> Parent = "+obj.parentNode.nodeName+" >> This = "+obj.nodeName;//+" :: nodeValue "+obj.nodeValue; 
                    this.origSizeCnt++; 
            } 
    }, 
    add: function(obj) { 
            this.curSize = getStyle(obj.parentNode,'font-size'); 
            if( this.curSize != 'undefined' && obj.nodeName=="#text" && obj.parentNode.nodeName != "DIV") { 
                    var newSize = parseInt((this.curSize.substring(0,this.curSize.length-2))) + 1; 
                    obj.parentNode.style.fontSize = newSize + this.curSize.substring(this.curSize.length-2,this.curSize.length); 
                    this.echo += "\n\rADD:: "+this.curSize+" >> Parent = "+obj.parentNode.nodeName+" >> This = "+obj.nodeName;//+" :: nodeValue "+obj.nodeValue; 
                    this.origSizeCnt++; 
            } 
        }, 
    dec: function(obj) { 
            this.curSize = getStyle(obj.parentNode,'font-size'); 
            if( this.curSize != 'undefined' && obj.nodeName=="#text" && obj.parentNode.nodeName != "DIV") { 
                    var newSize = parseInt((this.curSize.substring(0,this.curSize.length-2))) - 1; 
                    obj.parentNode.style.fontSize = newSize + this.curSize.substring(this.curSize.length-2,this.curSize.length); 
                    this.echo += "\n\rDEC:: "+this.curSize+" >> Parent = "+obj.parentNode.nodeName+" >> This = "+obj.nodeName;//+" :: nodeValue "+obj.nodeValue; 
                    this.origSizeCnt++; 
            } 
        }, 
    traverseTree: function(tree){ 
            var cnt = null; 
            if(tree.hasChildNodes() && tree.nodeName != "P") { // Don't process paragraph sub elements 
                var nodes = tree.childNodes.length; 
                for(var i=0; i<tree.childNodes.length; i++) { 
                    if(tree.childNodes[i].nodeName != "A"){ 
                        this.traverseTree(tree.childNodes[i]); 
                        cnt++; 
                    } 
                    this.echo += " :: "+cnt+" :: "; 
                }  
            } else if (tree.nodeName == "P") { // Only pass the outer paragraph tag once to limit is change occurance to one 
                if(this.activeFunc == 'add')  
                    this.add(tree.childNodes[0]); 
                else if (this.activeFunc == 'dec') 
                    this.dec(tree.childNodes[0]); 
                else if (this.activeFunc == 'get') 
                    this.get(tree.childNodes[0]); 
                else  
                    this.set(tree.childNodes[0]); 
            } else { 
                if(this.activeFunc == 'add')  
                    this.add(tree); 
                else if (this.activeFunc == 'dec') 
                    this.dec(tree); 
                else if (this.activeFunc == 'get') 
                    this.get(tree); 
                else  
                    this.set(tree); 
            } 
        }, 
        subSetFunc: function(val) { 
            this.origSizeCnt = 0; 
            this.echo += "\n\rOrigSize Length = "+ origSize.length; 
            for(i=0;i<origSize.length;i++) { 
                this.echo += "\n\rOrigSize["+ i + "] = "+origSize[i]; 
            } 
            this.enabeled = true; 
            this.changeCnt = 0; 
            this.init(val); 
        } 
} 
  
function $(element) { 
    var elements = new Array(); 
    for (var i=0;i<arguments.length;i++) { 
        var element = arguments[i]; 
        if (typeof element == 'string') element = document.getElementById(element); 
        if (arguments.length == 1) return element; 
        elements.push(element); 
    } 
    return elements; 
} 
  
function getStyle(el,styleProp) 
{ 
    var x = el; 
    if (x.currentStyle) 
        var y = x.currentStyle['fontSize']; 
    else if (window.getComputedStyle) 
        try { var y = document.defaultView.getComputedStyle(x,null).getPropertyValue('font-size'); } 
        catch(e) { 
            //donothing 
        } 
    return y; 
} 
  
var Event = { 
    add: function(obj,type,fn) { 
        if (obj.attachEvent) { 
            obj['e'+type+fn] = fn; 
            obj[type+fn] = function() { obj['e'+type+fn](window.event); } 
            obj.attachEvent('on'+type,obj[type+fn]); 
        } else 
        obj.addEventListener(type,fn,false); 
    }, 
    remove: function(obj,type,fn) { 
        if (obj.detachEvent) { 
            obj.detachEvent('on'+type,obj[type+fn]); 
            obj[type+fn] = null; 
        } else 
        obj.removeEventListener(type,fn,false); 
    } 
} 
The html code:

Code: Select all

<img src="fnt_sizer_sub.gif" id="fntSizeDec" alt="decrease font size" /> 
<span id="fntSizeReset" style="padding:0 3px;" >Font Resize</span> 
<img src="fnt_sizer_add.gif" alt="Increase font size"  id="fntSizeInc" /> 
  
  
<div id="content"> 
<p>This is pages font..I want to resize it.</p> 
</div> 
Post Reply

Return to “The Lounge”