Hey folks,

I've been able to replicate a consistent crash with Mobile Safari
using 1.1.3 firmware. I'm using the cookie class written by David
Flanagan in his highly accredited JavaScript: The Definitive Guide,
code can be found here:

http://www.davidflanagan.com/javascript5/display.php?n=19-2&f=19/Cookie.js

I believe the code I've appended at the bottom of this email is the
culprit. I basically keep track of visited IDs of an <li> element in a
cookie.  In a nutshell for those who don't feel like reading the code,
I create a cookie and set its expiration to 24 hours. In it, I have a
cookie named visited_data with a value of something like

visited_data=visited:1|2|3|4

where 1,2,3,4 are the visited IDs.  I have code which can arbitrarily
remove ids and add ids. However, on the iPhone .. and iPhone only
(cannot replicate on Safari3/Webkit).. if I click enough <li>
elements, about 6+, it crashes the browser.

Does anyone have any idea what could be causing it? Is the value of
the cookie data limited in an iPhone? Is there a more elegant approach
to my solution for storing visited status on multiple elements, say
100+ ?

Using binary bitmasks has crossed my mind.. but I'm quite reluctant at
the moment in that approach because of readability by other
developers.

Thanks all.

/sf

code:

function _check_status(obj) {
        
        var evt = window.event;
        var el  = evt.srcElement;

        if (el.tagName == "SELECT") return;
        
        var pid = el.lastChild.id || el.parentNode.lastChild.id;
        
        // Check if patient has been visited
        var cookie = new Cookie("visited_data");
        
        // Check if patient has been visited.
        if(cookie.visited) {
                // check if particular id has been visited.
                
                        if(!cookie.check(pid)) {
                                cookie.visited += "|" + pid;
                                cookie.store(1);
                                obj.className += " visited";

                        } else {
                                var values = cookie.visited.split("|");
                delete cookie.visited;
                                cookie.visited = '';
                                
                                for(var i=0; i < values.length; i++) {
                        if (values[i] == pid)
                        continue;
                    else cookie.visited += "|" + values[i] ;
                }
                                cookie.visited = cookie.visited.substring(1);
                                
                                cookie.store(1);
                                obj.className = "patients";
                        }
                
         } else {
                        cookie.visited = pid;
                        cookie.store(1);
                        // User has NOT been visited, enable their visited 
status.
                        obj.className += " visited";
         }

}

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"iPhoneWebDev" 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/iphonewebdev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to