--- 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: [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/

