I'll take *your* word for that, since I didn't analyse the code supplied... :-)
Out of interest, anyone else ever see intermittent failures from getElementsByTagName in IE/ASV? As in, nodes occasionally not being found? I should point out we use the browser's JavaScript engine, not ASV's. That might make a difference. Perhaps it is just us, and the problem lies elsewhere. Perhaps the fact that our replacement code solves the problem we had when using getElementsByTagName is a red herring. Guy On 27/04/2007, at 10:05 AM, domenico_strazzullo wrote: > --- In [email protected], Guy Morton <[EMAIL PROTECTED]> wrote: >> >> We have found on anything but the smallest XML nodes that >> getElementsByTagName sometimes fails to find nodes that our >> replacement function finds 100% reliably. YMMV, but that's what we've >> found and since this person is reporting an intermittent null object >> error the symptoms match. > > Oh, I believe you, nevertheless in this particular case the script, if > it has to convert, say, 1000 elements, is actually executing 499499 > conversions. If the function call comes from a for loop without > setTimeout (which we don't know) no wonder if there's a massive > overflow. The basic problem is in the structure. > >> I guess in the absence of any word back about this we'll never know >> if getElementsByTagName was to blame in this case. >> >> Guy > > Guess so... > > Domenico > > > >> >> On 27/04/2007, at 1:53 AM, domenico_strazzullo wrote: >> >>> Hum... to my experience getElementsByTagNameNS works very well in >>> IE/ASV. There's a syntax error in the script but I suppose it's >>> just a >>> typo while pasting portions of the script, somehow? (It's always >>> better to include scripts as they appear in the editor). I also >>> suppose you're calling addGeom(node) from a for loop, so I think the >>> architecture you're using is not safe, in that you are >>> recursively and >>> unnecessarily repopulating myTile. Worse for worse, declare it as >>> global and push the new element. As a test, reading childNodes or >>> hasChildNodes or myTile.length might very well give anarchic >>> results. >>> I would rather play it safe, i.e. append all the children first, and >>> then execute the data conversions. And by the way, if >>> "featureMember"s >>> are the only children of 'xmlobjects' then you can skip creating >>> myTyle altogether and just use xmlobjects.childNodes instead; why >>> make >>> a new large array when one exists already. The way it is now it >>> should >>> never work very well. >>> >>>> 99% fine. >>> >>> What happens to the remaining 1%? (just kidding). >>> >>> Domenico >>> >>> >>> --- In [email protected], Guy Morton <guy@> wrote: >>>> >>>> getElementsByTagName is unreliable in IE/ASV. You haven't given >>>> a lot >>>> of details but I suspect this is your problem. we had similar >>>> problems and wrote a replacement function and the problem went >>>> away. >>>> >>>> Guy >>>> >>>> >>>> On 25/04/2007, at 9:26 PM, krugerboy1971 wrote: >>>> >>>>> I am trying to load some external GML map data into an SVG >>>>> document >>>>> - and it is working >>>>> 99% fine. >>>>> >>>>> 1. It works perfectly in Firefox >>>>> 2. It works in ASV - but I get intermittent error messages >>>>> ('Object >>>>> required') when calling >>>>> the function sometimes. On some occasions, It'll load the same >>>>> GML >>>>> data just fine. >>>>> >>>>> It seems that, at some stage during the loop for svg polygon >>>>> creation, ASV can't read the >>>>> GML elements which have been loaded into the 'xmlobjects' <g> >>>>> element. >>>>> >>>>> My code is below - anyone had anything similar happen? or any >>>>> ideas >>>>> why ASV is behaving >>>>> so erratically? >>>>> >>>>> function addGeom(node) { >>>>> clearXMLCache();//function to clear temporary area for GML loaded >>>>> svgDoc.getElementById('xmlobjects'.appendChild(node)//puts new GML >>>>> content in >>>>> temporary area >>>>> clearMapCache();//function clears out previous map geometry for >>>>> the >>>>> SVG >>>>> pathBuilder();//function to convert GML data into SVG syntax >>>>> } >>>>> >>>>> //MAIN function >>>>> function pathBuilder() { >>>>> var myData = svgDoc.getElementById('xmlobjects'); >>>>> var TargetLayer = svgDoc.getElementById('gmlcontent'); >>>>> >>>>> var aID = new Array(); >>>>> var aPaths = new Array(); >>>>> var myTile = myData.getElementsByTagNameNS >>>>> (gmlNS,"featureMember"); >>>>> var myBBox = myData.getElementsByTagNameNS(gmlNS,"Box").item(0); >>>>> var myBBoxData = myBBox.getElementsByTagNameNS >>>>> (gmlNS,"coordinates").item(0).firstChild.data; >>>>> var a = myBBoxData.split(","); >>>>> var b = a[1].split(" "); >>>>> var newX = a[0]; >>>>> var newWidth=b[1]-a[0]; >>>>> var newHeight=a[2]-b[0]; >>>>> var tempy = parseInt(b[0])+parseInt(newHeight); >>>>> var newY =-tempy; >>>>> var newViewbox = newX+' '+newY+' '+newWidth+' '+newHeight; >>>>> svgDoc.getElementById('mapwindow').setAttributeNS >>>>> (null,'viewBox',newViewbox); >>>>> nFeatures = myTile.length;//number of objects in the map data >>>>> for (i=0;i<nFeatures;i++) { >>>>> var myFeature = myTile.item(i); >>>>> var myPathData = 'M';//starts a path element for a map >>>>> feature >>>>> var myCode = myFeature.getElementsByTagNameNS("http:// >>>>> www.esri.com/WFS",'RESIDENCE').item(0).firstChild.data; >>>>> var myPolygons = myFeature.getElementsByTagNameNS >>>>> (gmlNS,'coordinates'); >>>>> //inner loop to deal with multi-polygons and >>>>> donuts - adds a >>>>> 'moveto' command >>>>> for (j=0;j<myPolygons.length;j++) { >>>>> var myCoords = >>>>> myPolygons.item(j).textContent; >>>>> if (myCoords ==null) { >>>>> myCoords = >>>>> myPolygons.item(j).firstChild.data; >>>>> } //End of if >>>>> if (j>0) { >>>>> myPathData = myPathData+' >>>>> M'+myCoords; >>>>> } else { >>>>> myPathData = >>>>> myPathData+myCoords; >>>>> } //end of if >>>>> } //End of inner for loop >>>>> //close path and update path array >>>>> myPathData = myPathData+'Z'; >>>>> aID[i] = myCode; >>>>> aPaths[i] = myPathData; >>>>> } //end of outer for loop >>>>> var newGroup = svgDoc.createElementNS('http://www.w3.org/2000/ >>>>> svg',"g"); >>>>> newGroup.setAttributeNS(null,'id','polygongroup'); >>>>> TargetLayer.appendChild(newGroup); >>>>> var PathTargetLayer = svgDoc.getElementById('polygongroup'); >>>>> for (k=0;k<nFeatures;k++) { >>>>> //CREATE PATH ELEMENT AND APPEND TO DOCUMENT >>>>> var newPath = >>>>> svgDoc.createElementNS('http://www.w3.org/2000/ >>>>> svg',"path"); >>>>> newPath.setAttributeNS(null,'d',aPaths[k]); >>>>> newPath.setAttributeNS(null,'id','GML_'+aID[k]); >>>>> PathTargetLayer.appendChild(newPath); >>>>> } //End of for loop >>>>> } //End of function >>>>> >>>>> >>>>> >>>>> >>>>> ----- >>>>> To unsubscribe send a message to: svg-developers- >>>>> [EMAIL PROTECTED] >>>>> -or- >>>>> visit http://groups.yahoo.com/group/svg-developers and click "edit >>>>> my membership" >>>>> ---- >>>>> Yahoo! Groups Links >>>>> >>>>> >>>>> >>>> >>> >>> >>> >>> >>> ----- >>> To unsubscribe send a message to: svg-developers- >>> [EMAIL PROTECTED] >>> -or- >>> visit http://groups.yahoo.com/group/svg-developers and click "edit >>> my membership" >>> ---- >>> Yahoo! Groups Links >>> >>> >>> >> > > > > > ----- > To unsubscribe send a message to: svg-developers- > [EMAIL PROTECTED] > -or- > visit http://groups.yahoo.com/group/svg-developers and click "edit > my membership" > ---- > Yahoo! Groups Links > > > ----- To unsubscribe send a message to: [EMAIL PROTECTED] -or- visit http://groups.yahoo.com/group/svg-developers and click "edit my membership" ---- Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/svg-developers/ <*> Your email settings: Individual Email | Traditional <*> To change settings online go to: http://groups.yahoo.com/group/svg-developers/join (Yahoo! ID required) <*> To change settings via email: mailto:[EMAIL PROTECTED] mailto:[EMAIL PROTECTED] <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/

