I didn't say it doesn't work... I know it works on its own. I said you need
to change *how* it works -- you can't pass a null value to the FlashVars
object. See the sample code in previous emails.


On Tue, Jan 5, 2010 at 8:04 AM, ryan <[email protected]> wrote:

> I understand what you are saying. But this cookie syntax is correct.
> It works perfectly on its own. The only time it doesnt work is with
> swfObject embed. Thats been the problem from the start. The code Ive
> pasted below is the extact code I have been using all along except it
> uses a conditional statement and document.write rather than attempting
> to interact with a SWF via swfObject flashvars. If you test the
> following code, you will see that the cookie does work. I just need a
> way to communicate the value to Flash.
>
> Thanks man, I'll send you a 6-pack of whatever you want. Promise.
> 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";>
> <head>
> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
> <title>Untitled Document</title>
> </head>
>
>
> <body>
>
> <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 what appears to be your first visit")
> else
> document.write("Thank you for returning for what appears to be your
> visit number " + visits + ".")
>
> // -->
> </SCRIPT>
> </body>
> </html>
>
>
>
>
> On Dec 31 2009, 12:48 pm, Philip Hutchison <[email protected]>
> wrote:
> > Ryan
> >
> > My point is that your getCookie JavaScript function must not be returning
> a
> > proper value. If the SWFObject embed code works with a static value, then
> we
> > know SWFObject works and your SWF loads correctly.  If it doesn't work
> when
> > your getCookie function is used, it's most likely because your getCookie
> > function isn't returning a proper value.  You can't pass *null* as a
> > flashvars value because null is the *absence* of value.
> >
> > var flashvars = { visits: null };
> >
> > will cause SWFObject to out this as a flashvar:
> >
> > "visits="+null
> >
> > Which will not work. If you change your getCookie function to return an
> > empty string instead of null when no cookie is found, you will be better
> off
> >
> > var flashvars = { visits: "" };
> >
> > will cause SWFObject to out this as a flashvar:
> >
> > "visits="+""
> >
> > This is a harmless statement that won't throw any errors.
> >
> > Or, as I previously mentioned, if you use an || operator in your
> flashvars
> > statement you can leave your getCookie function as-is:
> >
> > var flashvars = {
> >    visits: getCookie() || 1
> >
> > };
> >
> > This means if getCookie returns null, visits will be assigned a value of
> 1
> > instead.
> >
> > Long story short, the issue is in your JS, not SWFObject.
> >
> > - philip
> >
> >
> >
> > On Thu, Dec 31, 2009 at 8:45 AM, ryan <[email protected]>
> wrote:
> > > This change did cause the swf to finally show, but I dont think it is
> > > a workable solution because the value of  'counter' is not static. In
> > > other words, if I understand this correctly, writing - var flashvars =
> > > { visits: 3 }; would be assigning an absolute value, which would
> > > defeat the purpose of having a cookie which counts. Is this not
> > > correct?
> >
> > > On Dec 30, 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
> >
> > ...
> >
> > read more ยป- Hide quoted text -
> >
> > - Show quoted text -
>
> --
>
> 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