Closed Bug 421015 Opened 16 years ago Closed 15 years ago

ajax map on igglo.com site doesn't display on firefox 3

Categories

(Tech Evangelism Graveyard :: Norwegian, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WORKSFORME

People

(Reporter: chofmann, Unassigned)

References

()

Details

map displays and interactive features seem to work fine in firefox 2.  nothing is displayed in the map area of the page using firefox 3 beta 3 on windows.
Flags: blocking1.9?
Regression range for this is 
http://bonsai.mozilla.org/cvsquery.cgi?module=PhoenixTinderbox&date=explicit&mindate=1170337800&maxdate=1170344039
with only Bug 357450 in it.
Blocks: 357450
Keywords: regression
OS: Mac OS X → All
Hardware: PC → All
Version: unspecified → Trunk
Problem exists on OS X as well.  Works fine in Fx2, not 3.

Suggestions for component?
Flags: blocking1.9? → blocking1.9+
Priority: -- → P2
Well, the bug in the regression range is Core:DOM, but someone more familiar with this code might want to confirm that's indeed why this broke first.
Moving this to Core:DOM.  Otherwise, this will be hard to see in people's lists.
Component: General → DOM
QA Contact: general → general
igglo.fi seems to use Prototype 1.5.0, which defined its own 
getElementsByClassName.
The error I get is
Error: this.element.className is undefined
Source File: http://static.igglo.fi/lib/js/class/prototype.js?r=9429c
Line: 1719
Thanks for the research, Smaug.  Moving to evangelism and removing blocking flag.  Also removing the regression keyword.  If that's not the usual thing to do (removing the regression keyword), please speak up.  :)
Assignee: nobody → norwegian
Component: DOM → Norwegian
Flags: blocking1.9+
Keywords: regression
Priority: P2 → --
Product: Core → Tech Evangelism
QA Contact: general → norwegian
Version: Trunk → unspecified
I'm not sure I follow.

If I start up 2.0.0.12 switch to a firefox gecko1.9b4/firefox 3.0b4 UA I don't see the error, and I do get the map displayed, so this doesn't look like a sniffing problem.  is fx3 more strick in detecting this error, or are we interpreting the content different now?  is that behavior expected as the result of some change that was intended, or is this an unintended side effect of a change between fx2 and 3 (possibly as the result of changes made in bug 357450)

If the new feature provided in bug 357450 is the cause of the new error, and that feature and this side effect is going to stick, then we should also add some guidance in this bug for the web author to help in getting the site updated.

rsayer, can you weigh in?


I guess the shorter summary of events and questions remaining are:

1. firefox 2 shows the site fine
2. patch for bug 357450 lands 
3. fx3 starts to show errors (comment 5) and not display map content  on this site (comment 0 and 2).

comment 2 shows strong connection between events 2 and 3.

questions remaining are

4. is there a bug in the spec for http://www.whatwg.org/specs/web-apps/current-work/#getelementsbyclassname
5. is there a bug in the implementation of the feature.
6. if there are bugs in either 4 or 5 are we going to live with them, or are we going to try and fix them so this site and possible others don't have to work around.
7. do we need more research to figure out if this site represents an isolated problem, or figure out if the problem is more widespread.
8.  if the spec, implimenation, and side effects will remain intact do we have docs that provide guidance on how sites deal with the new change.

Isn't this just a problem with the older library's implementation of gECN not matching the specified behaviour?  With a newer Prototype, I think this goes away. jresig: am I out to lunch?
So here's the JS stack when that exception is thrown:

0 anonymous(iterator = [function]) ["http://static.igglo.fi/lib/js/class/prototype.js?r=9429c":1719]
1 anonymous(iterator = [function]) ["http://static.igglo.fi/lib/js/class/prototype.js?r=9429c":326]
    index = 0
2 anonymous(object = "selected") ["http://static.igglo.fi/lib/js/class/prototype.js?r=9429c":404]
    found = false
3 anonymous(classNameToRemove = "selected") ["http://static.igglo.fi/lib/js/class/prototype.js?r=9429c":1734]
4 anonymous(className = "selected", element = [object HTMLCollection @ 0x201a9220 (native @ 0x20189cb0)]) ["http://static.igglo.fi/lib/js/class/prototype.js?r=9429c":1311]
    this = [object Element]
5 anonymous(h = [object HTMLCollection @ 0x201a9220 (native @ 0x20189cb0)], 0) ["http://static.igglo.fi/lib/js/class/scriptaculous/src/slider.js":202]
6 anonymous(value = [object HTMLCollection @ 0x201a9220 (native @ 0x20189cb0)]) ["http://static.igglo.fi/lib/js/class/prototype.js?r=9429c":328]
    this = [object Window @ 0x1d468910 (native @ 0x1d46329c)]
7 anonymous(iterator = [function]) ["http://static.igglo.fi/lib/js/class/prototype.js?r=9429c":541]
    length = 1
    i = 0
    this = [object HTMLCollection @ 0x201a9220 (native @ 0x20189cb0)]
8 anonymous(iterator = [function]) ["http://static.igglo.fi/lib/js/class/prototype.js?r=9429c":326]
    index = 1
    this = [object HTMLCollection @ 0x201a9220 (native @ 0x20189cb0)]
9 anonymous() ["http://static.igglo.fi/lib/js/class/scriptaculous/src/slider.js":202]
    this = [object Object]
10 anonymous(handleIdx = 0, sliderValue = 0) ["http://static.igglo.fi/lib/js/class/scriptaculous/src/slider.js":131]
    this = [object Object]
11 anonymous(i = 0, h = [object HTMLCollection @ 0x201a9220 (native @ 0x20189cb0)]) ["http://static.igglo.fi/lib/js/class/scriptaculous/src/slider.js":81]
12 anonymous(value = [object HTMLCollection @ 0x201a9220 (native @ 0x20189cb0)]) ["http://static.igglo.fi/lib/js/class/prototype.js?r=9429c":328]
    this = [object Window @ 0x1d468910 (native @ 0x1d46329c)]
13 anonymous(iterator = [function]) ["http://static.igglo.fi/lib/js/class/prototype.js?r=9429c":541]
    length = 1
    i = 0
    this = [object HTMLCollection @ 0x201a9220 (native @ 0x20189cb0)]
14 anonymous(iterator = [function]) ["http://static.igglo.fi/lib/js/class/prototype.js?r=9429c":326]
    index = 1
    this = [object HTMLCollection @ 0x201a9220 (native @ 0x20189cb0)]
15 anonymous(options = [object Object], track = [object HTMLDivElement @ 0x1ddc2930 (native @ 0x1dda8cc0)], handle = [object HTMLCollection @ 0x201a9220 (native @ 0x20189cb0)]) ["http://static.igglo.fi/lib/js/class/scriptaculous/src/slider.js":76]
    slider = [object Object]
    this = [object Object]
16 anonymous([object HTMLCollection @ 0x201a9220 (native @ 0x20189cb0)], [object HTMLDivElement @ 0x1ddc2930 (native @ 0x1dda8cc0)], [object Object]) ["http://static.igglo.fi/lib/js/class/prototype.js?r=9429c":23]
    this = [object Object]
17 anonymous(object = [object Object]) ["http://static.igglo.fi/lib/js/page/Map.js?r=9429c":1068]
    end = 29
    start = 0
    range = [object Object]
    i = 0
    events = [object Object]
    elements = [very long list here]
(gdb) frame 6
#6  0x0034e04c in js_Interpret (cx=0x1d463420) at ../../../mozilla/js/src/jsinterp.c:4288
4288                        js_ReportIsNullOrUndefined(cx, -1, lval, NULL);

lval is JSVAL_VOID.  That's this.element.className.

(gdb) call JS_GetProperty(cx, fp->thisp, "element", &lval)
$14 = 1

now it's this.element.  Happens to be a JSObject.

(gdb) p *JS_GetClass(cx, (JSObject*)lval)
$19 = {
  name = 0x1ca92ae0 "HTMLCollection", 

I have no idea how this code came to have an HTMLCollection where it expects to have an Element. But it does....

At first blush, I would also suspect a bug in this version of Prototype.
data:text/html,<body onload="f()"><p id="a"><p id="a"><p id="b"><script>function f(){alert(document.all["a"]+' '+document.all["b"])}</script>

That's the easiest way to get confused. document.all for a single node will give you a node, but if you give two nodes the same id, you'll get a collection.
the map area is now looking ok on

Build identifier: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9) Gecko/2008061004 Firefox/3.0

I'll let a few others weight in on the other platforms then it looks like this can be marked fixed or works for me.
looks like the site no longer offers this map.  closing
Status: NEW → RESOLVED
Closed: 15 years ago
Resolution: --- → WORKSFORME
Product: Tech Evangelism → Tech Evangelism Graveyard
You need to log in before you can comment on or make changes to this bug.