If all you're trying to do with the cookie code is track number of visits, I
think your code is too complex.  Try using a simpler system such as
PPK's<http://www.quirksmode.org/js/cookies.html>
.

This code should work for you. Replace all your other code with this in your
document's <head>:

<script src="http://ajax.googleapis.com/ajax/
libs/swfobject/2.2/swfobject.js"></script>

<script>

function createCookie(name,value,days) {
   var expires = "";
   if(days) {
      var date = new Date();
      date.setTime(date.getTime()+(days*24*60*60*1000));
      expires = "; expires="+date.toGMTString();
   }
   document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
   var nameEQ = name + "=";
   var ca = document.cookie.split(';');
   for(var i=0;i < ca.length;i++) {
      var c = ca[i];
      while (c.charAt(0) === ' '){
          c = c.substring(1,c.length);
      }
      if (c.indexOf(nameEQ) === 0){
          return c.substring(nameEQ.length,c.length);
      }
   }
   return null;
}

var counter = readCookie("counter");
var prior_visits = (counter !== null) ? parseInt(counter, 10) : 0;
var current_visit = prior_visits +1;

createCookie("counter", current_visit, 365);

if(prior_visits === 0){
    alert("This is your first visit");
} else {
   alert("This is visit #" + current_visit);
}

var flashvars = {
   visits: current_visit
};

swfobject.embedSWF("main_banner.swf", "myContent", "189", "151", "9.0.0",
false, flashvars);

</script>


Make sure to clear your cookies or use a different cookie name when testing,
otherwise you'll see results from prior cookies.

Bear in mind discussing cookie code is way off-topic for this SWFObject
list, so if you need additional JS help I suggest checking out some good JS
forums.  It also helps to use tools like JSLint <http://jslint.com/> to
check your JS syntax and ensure you follow good code practices, such as
using curly braces and semicolons.

- philip



On Tue, Jan 5, 2010 at 2:44 PM, ryan <[email protected]> wrote:

> Im sorry, I misunderstood what you were saying. I have to say that I
> am literally brand new to javascript and swfobject and im really
> struggling to get a handle on it- so i definitely appreciate your
> patience with this. Im mainly confused by the following- if a user is
> visiting the page for the first time, it seems that the value would
> not be null, but "1" right? Do I need to declare the value first as it
> is here;
>
> if (visits == 1)
> document.write("Thank you for what appears to be your first visit")
> <!-- IE change this command to something that can be read by
> flashvars?-->
> else
> document.write("Thank you for returning for what appears to be your
> <!-- and this as well?-->
> visit number " + visits + ".")
>
> and then pass that data to the flashvars?
>
> On Dec 30 2009, 4:59 pm, Philip Hutchison <[email protected]>
> wrote:
> > If your SWFObject embed code works when you don't specify the flashvars:
> >
> > swfobject.embedSWF("main_banner.swf", "myContent", "189", "151", "9.0.0",
> > false);
> >
> > and fails when you DO use the flashvars:
> >
> > var flashvars= { visits: getCookie('counter') };
> > swfobject.embedSWF("main_banner.swf", "myContent", "189", "151", "9.0.0",
> > false, flashvars);
> >
> > then logic dictates that there's a problem with your flashvars value.
>  try
> > using a static value instead of the getCookie function.
> >
> > var flashvars = { visits: 3 };
> > swfobject.embedSWF("main_banner.swf", "myContent", "189", "151", "9.0.0",
> > false, flashvars);
> >
> > make sure you use the SAME HTML PAGE for each test so you can eliminate
> any
> > other potential conflicts.
> >
> > - philip
> >
> >
> >
> > On Wed, Dec 30, 2009 at 11:03 AM, ryan <[email protected]>
> wrote:
> > > The swfobject is still returning the alternate content. The cookie
> > > works fine independantly.
> >
> > > see below:
> >
> > > <SCRIPT LANGUAGE="JavaScript">
> > > <!--
> > > // Boolean variable specified if alert should be displayed if cookie
> > > exceeds 4KB
> > > var caution = false
> >
> > > function setCookie( jscookie, value, expires, path, domain, secure) {
> > >        var curCookie =  jscookie + "=" + escape(value) +
> > >                ((expires) ? "; expires=" + expires.toGMTString() :
> > > "") +
> > >                ((path) ? "; path=" + path : "") +
> > >                ((domain) ? "; domain=" + domain : "") +
> > >                ((secure) ? "; secure" : "")
> > >        if (!caution || (name + "=" + escape(value)).length <= 4000)
> > >                document.cookie = curCookie
> > >        else
> > >                if (confirm("Cookie exceeds 4KB and will be cut!"))
> > >                        document.cookie = curCookie
> > > }
> >
> > > // name - name of the desired cookie
> > > // * return string containing value of specified cookie or null if
> > > cookie does not exist
> > > function getCookie(name) {
> > >        var prefix = name + "="
> > >        var cookieStartIndex = document.cookie.indexOf(prefix)
> > >        if (cookieStartIndex == -1)
> > >                return null
> > >        var cookieEndIndex = document.cookie.indexOf(";",
> > > cookieStartIndex + prefix.length)
> > >        if (cookieEndIndex == -1)
> > >                cookieEndIndex = document.cookie.length
> > >        return unescape(document.cookie.substring(cookieStartIndex +
> > > prefix.length, cookieEndIndex))
> > > }
> >
> > > // date - any instance of the Date object
> > > // * you should hand all instances of the Date object to this function
> > > for "repairs"
> > > // * this function is taken from Chapter 14, "Time and Date in
> > > JavaScript", in "Learn Advanced JavaScript Programming"
> > > function fixDate(date) {
> > >        var base = new Date(0)
> > >        var skew = base.getTime()
> > >        if (skew > 0)
> > >                date.setTime(date.getTime() - skew)
> > > }
> >
> > > var now = new Date()
> > > fixDate(now)
> > > now.setTime(now.getTime() + 365 * 24 * 60 * 60 * 1000)
> > > var visits = getCookie("counter")
> > > if (!visits)
> > >        visits = 1
> > > else
> > >        visits = parseInt(visits) + 1
> > > setCookie("counter", visits, now)
> >
> > > if(visits == 1)
> > > document.write("Thank you for your first visit")
> > > else
> > > document.write("Thank you for returning for your visit number " +
> > > visits + " " )
> >
> > > // -->
> >
> > > I have had no probelm getting this to register whatever the visit
> > > number is. I just need to pass that number on to Flash. Thanks again
> > > man, you are a trooper.
> >
> > > Ry
> >
> > > On Dec 30, 1:13 pm, Philip Hutchison <[email protected]> wrote:
> > > > i meant you're testing for a number:
> >
> > > > visit == 1
> >
> > > > but passing a string via flashvars.
> >
> > > > trace(_root.visit === "1");
> > > > trace(_root.visit === 1);
> >
> > > > if you want to look for a number in your conditional statements, you
> > > should
> > > > convert the string to a proper number.
> >
> > > > your swfobject code looks ok.  i see your getcookie function is a bit
> > > > complex and could possibly return a null. a null flashvars value
> could
> > > cause
> > > > an error in swfobject. try changing the flashvars to this and see if
> it
> > > > works:
> >
> > > > var flashvars= {
> > > >    visits: getCookie('counter') || 1
> >
> > > > };
> >
> > > > this way if getcookie has problems you'll pass a 1 instead.
> >
> > > > - philip
> >
> > > > On Wed, Dec 30, 2009 at 9:30 AM, ryan <[email protected]>
> > > wrote:
> > > > > Hi Philip,
> > > > > Thanks again, but I am still getting the same result. Im not sure
> what
> > > > > the problem is, but this is the embed tag as I have it now. I took
> > > > > your advice and ammended visits to capvisits- but I need to make it
> to
> > > > > a point where the swf is showing up in order to test that. In your
> > > > > reply you mentioned casting the numbers in the string, do you mean
> > > > > declaring var visits:String = "1,2,3,4"? and if so, would I place
> that
> > > > > in the Flash file or the javascript?
> >
> > > > > Thanks for all your help on this,
> > > > > Ryan
> >
> > > > > <script type="text/javascript" src="
> http://ajax.googleapis.com/ajax/
> > > > > libs/swfobject/2.2/swfobject.js"></script>
> > > > > <script type="text/javascript">
> > > > > var flashvars= { visits: getCookie('counter') };
> > > > > swfobject.embedSWF("main_banner.swf", "myContent", "189", "151",
> > > > > "9.0.0", false, flashvars);
> > > > > </script>
> > > > > </head>
> >
> > > > > On Dec 30, 11:53 am, Philip Hutchison <[email protected]>
> wrote:
> > > > > > Your SWFObject statement is malformed. Sorry I didn't notice that
> > > > > earlier.
> >
> > > > > > This:
> > > > > > swfobject.embedSWF("main_banner.swf", "myContent", "189",
> > > "151","9.0.0",
> > > > > > flashvars);
> >
> > > > > > Should be this:
> > > > > > swfobject.embedSWF("main_banner.swf", "myContent", "189",
> > > "151","9.0.0",
> > > > > > false, flashvars);
> >
> > > > > > (You're missing the required Express Install argument before the
> > > > > flashvars
> > > > > > argument)
> >
> > > > > > Here are some other thoughts:
> >
> > > > > > *  You might want to look at how the data is being passed to the
> > > SWF...
> > > > > > values passed via flashvars are all strings. Your SWF's
> conditional
> > > > > > statements are looking for numbers. Maybe you need to cast them.
> >
> > > > > > * Your "visits" variable is listed as _root.visit in one place
> but
> > > simply
> > > > > as
> > > > > > "visit" in another.  Perhaps there's a scope issue because of
> this?
> >
> > > > > > * Are your "visits" conditional statements supposed to be using
> > > > > "capvisits"?
> >
> > > > > > Here's what I assume you're trying to do:
> >
> > > > > > var capvisits:Number  = Number(_root.visits) || 1;
> >
> > > > > > if (capvisits == 1) {
> > > > > > this.gotoAndPlay("investment_focus");
> >
> > > > > > }
> >
> > > > > > if (capvisits == 2) {
> > > > > > this.gotoAndPlay("white_papers");
> >
> > > > > > }
> >
> > > > > > - philip
> >
> > > > > > On Wed, Dec 30, 2009 at 8:39 AM, ryan <
> [email protected]>
> > > > > wrote:
> > > > > > > Hi Philip,
> > > > > > > Thanks for your reply. I made the code change you suggested and
> > > > > > > unfortunately I am getting the same result (the alternative
> content
> > > > > > > displays). I feel like this is really close though. If anyone
> has a
> > > > > > > little extra insight I would love it and thanks again Philip.
> > > > > > > Ryan
> >
> > > > > > > On Dec 30, 11:28 am, Philip Hutchison <[email protected]>
> > > wrote:
> > > > > > > > this:
> > > > > > > > var flashvars = {"visits=' + getCookie('counter')+'"};
> >
> > > > > > > > should be this:
> > > > > > > > var flashvars = { visits: getCookie('counter') };
> >
> > > > > > > > - philip
> >
> > > > > > > > On Wed, Dec 30, 2009 at 7:51 AM, ryan <
> > > [email protected]>
> > > > > > > wrote:
> > > > > > > > > Thanks in advance for looking at this. I am trying to set/
> > > retrieve
> > > > > a
> > > > > > > > > cookie which counts a users visits to a page and then
> returns
> > > the
> > > > > > > > > value using flashvars and swfobject2. The cookie and the
> swf
> > > work
> > > > > > > > > independantly, the swfobject embed works fine until i try
> to ad
> > > the
> > > > > > > > > vars... The examples I dowloaded all use a conditional
> > > statement to
> > > > > > > > > apphend the vars in the html file itself. I have code
> within
> > > the
> > > > > root
> > > > > > > > > of my swf telling the file what to do with the cookie. IE;
> >
> > > > > > > > > var capvisits:String  = _root.visits;
> > > > > > > > > if (capvisits == null) {
> > > > > > > > >    capvisits = 1;
> > > > > > > > > }
> >
> > > > > > > > > if (visits == 1) {
> > > > > > > > > this.gotoAndPlay("investment_focus");
> > > > > > > > > }
> >
> > > > > > > > > if (visits == 2) {
> > > > > > > > > this.gotoAndPlay("white_papers");
> > > > > > > > > }
> >
> > > > > > > > > etc. - but if it would be better to write this into the
> > > flashvars I
> > > > > am
> > > > > > > > > perfectly open to that as well. Following is the entire
> file.
> > > > > Thanks
> > > > > > > > > again, Ryan
> >
> > > > > > > > > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
> Transitional//EN"
> > > > > "http://
> > > > > > > > >www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
> > > > > > > > > <html xmlns="http://www.w3.org/1999/xhtml"; lang="en"
> > > > > xml:lang="en">
> > > > > > > > > <head>
> > > > > > > > > <meta http-equiv="Content-Type" content="text/html;
> > > > > > > > > charset=iso-8859-1" />
> > > > > > > > > <title>Untitled Document</title>
> > > > > > > > >                <script type="text/javascript" src="
> > > > > > > > >http://ajax.googleapis.com/ajax/
> > > > > > > > > libs/swfobject/2.2/swfobject.js<
> > > > > > >
> http://ajax.googleapis.com/ajax/%0Alibs/swfobject/2.2/swfobject.js>
> > > > > > > > > "></script>
> > > > > > > > >                <script type="text/javascript">
> > > > > > > > >                var flashvars = {"visits=' +
> > > > > getCookie('counter')+'"};
> > > > > > > > >                swfobject.embedSWF("main_banner.swf",
> > > "myContent",
> > > > > > > "189",
> > > > > > > > > "151",
> > > > > > > > > "9.0.0", flashvars);
> > > > > > > > >                </script>
> > > > > > > > >        </head>
> > > > > > > > >        <body>
> > > > > > > > >                <div id="myContent">
> > > > > > > > >                        <h1>Alternative content</h1>
> > > > > > > > >                        <p><a href="
> > > > > > >http://www.adobe.com/go/getflashplayer
> > > > > > > > > "><img
> > > > > > > > > src="http://www.adobe.com/images/shared/download_buttons/
> > > > > > > > > get_flash_player.gif<
> >
> > ...
> >
> > read more ยป
>
> --
> You received this message because you are subscribed to the Google Groups
> "SWFObject" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<swfobject%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/swfobject?hl=en.
>
>
>
>
--
You received this message because you are subscribed to the Google Groups "SWFObject" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to [email protected].
For more options, visit this group at http://groups.google.com/group/swfobject?hl=en.

Reply via email to