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

Reply via email to