tags:

views:

29

answers:

1

Hi All

I'm using a jQuery text-resizing script, from here - http://demos.cool-javascripts.com/jquery-fontsize-controller.html. The scipt is as follows:

function fontSize(container, target, minSize, defSize, maxSize) {
/*Editable settings*/
var minCaption = "Make font size smaller"; //title for smallFont button
var defCaption = "Make font size default"; //title for defaultFont button
var maxCaption = "Make font size larger"; //title for largefont button


//Now we'll add the font size changer interface in container
smallFontHtml = "<a href='javascript:void(0);' class='smallFont' title='" + minCaption +"'>" + minCaption + "</a> ";
defFontHtml = "<a href='javascript:void(0);' class='defaultFont' title='" + defCaption +"'>" + defCaption + "</a> ";
largeFontHtml = "<a href='javascript:void(0);' class='largeFont' title='" + maxCaption +"'>" + maxCaption + "</a> ";
$(container).html(smallFontHtml + defFontHtml + largeFontHtml);

//Read cookie & sets the fontsize
if ($.cookie != undefined) {
    var cookie = target.replace(/[#. ]/g,'');
    var value = $.cookie(cookie);
    if (value != null) {
        $(target).css('font-size', parseInt(value));
    } else {
        $(target).css('font-size', defSize);
    }
}

//on clicking small font button, font size is decreased by 1px
$(container + " .smallFont").click(function(){ 
    curSize = parseInt($(target).css("font-size"));
    newSize = curSize - 1;
    if (newSize >= minSize) {
        $(target).css('font-size', newSize);
    } 
    if (newSize <= minSize) {
        $(container + " .smallFont").addClass("sdisabled");
    }
    if (newSize < maxSize) {
        $(container + " .largeFont").removeClass("ldisabled");
    }
    updatefontCookie(target, newSize); //sets the cookie 

});

//on clicking default font size button, font size is reset
$(container + " .defaultFont").click(function(){
    $(target).css('font-size', defSize);
    $(container + " .smallFont").removeClass("sdisabled");
    $(container + " .largeFont").removeClass("ldisabled");
    updatefontCookie(target, defSize);
});

//on clicking large font size button, font size is incremented by 1 to the maximum limit
$(container + " .largeFont").click(function(){
    curSize = parseInt($(target).css("font-size"));
    newSize = curSize + 1;
    if (newSize <= maxSize) {
        $(target).css('font-size', newSize);
    } 
    if (newSize > minSize) {
        $(container + " .smallFont").removeClass("sdisabled");
    }
    if (newSize >= maxSize) {
        $(container + " .largeFont").addClass("ldisabled");
    }
    updatefontCookie(target, newSize);
});

function updatefontCookie(target, size) {
    if ($.cookie != undefined) { //If cookie plugin available, set a cookie
        var cookie = target.replace(/[#. ]/g,'');
        $.cookie(cookie, size);
    } 
}
}

It works fine, and in conjunction with the jQuery cookie plugin, correctly stores the desired font size in a cookie. However, the cookie is always named to whatever the 'target' is, as defined in your function call:

function fontSize(container, target, minSize, defSize, maxSize)
function fontSize(".fontResizer", ".wrapper", 11, 13, 15);

So in my case, it's always called "wrapper". I can't for the life of me figure out how to specify a unique name for it.

Anyone any ideas?

+1  A: 

Well, the included script does use the target name as the cookie name. My suggestion is that you add a new parameter called cookieName. The New signature would then be:

function fontSize(container, target, minSize, defSize, maxSize, cookieName)

And in all references in the script use that value instead. That is, change for example this:

updatefontCookie(target, newSize); //sets the cookie 

to this:

updatefontCookie(cookieName, newSize); //sets the cookie 
Peter Jaric
Arrrggghhh, I knew it was going to be something simple - just didn't occur to me to pass the cookie name in the function call. Works perfectly, thanks!
Sam
Great! Can I beg for an upvote to? :)
Peter Jaric
Oh go on then...
Sam
Thanks! Nice :)
Peter Jaric