> Within my bindings I add <stelt:insert/> right after <children/> ,
> also i add stelt:path="something" to the first element within <content>.
> "something" there actually being "root" for my top element being bound
> and kids below that, being bound get "root_0", "root_1", etc.,
> grandchildren get "root_0_0" etc.
>
> Then i have the following code to generate a valid SVGDocument, that i
> call with a bookmarklet: javascript:viewShadowSource();
>
just a few bugs left (if only Venkman didn't crash Mozilla every few
moments):
function process(shadowchunk){
var path=shadowchunk.getAttribute("stelt:path");
var clonechunk=shadowchunk.cloneNode(true);
clonechunk.removeAttribute("stelt:path");
if (path==="root") {newdoc.documentElement.appendChild(clonechunk);}
var insertshortlist;
insertshortlist=clonechunk.getElementsByTagName("stelt:insert");
//insertshortlist=clonechunk.getElementsByTagName("http://some.temporary.com","i\
nsert");
would this be different ?
alert("insertshortlist.length="+insertshortlist.length);// 0 which
is not expected
var insertchunk;
if (insertshortlist.length==1){
insertchunk=insertshortlist[0];
insertpoints[path]=insertchunk;
}
if (path!="root"){
var parentpath=path.substring(0,path.lastIndexOf("_"));
alert(insertpoints["root"]); //UNDEFINED
var insertpoint=insertpoints[parentpath];
insertpoint.parentNode.insertBefore(clonechunk, insertpoint);
}
}
function addShadow(chunk){
var anonylist=null;
var i;
try{
anonylist=document.getAnonymousNodes(chunk);
}catch(e){
//alert("caught error");
}
var n;
if (anonylist===null){n=0;}
else {n=anonylist.length;}
if (n>0){
for (i=0; i<n; i++) {process(anonylist[i]);}
}
var list=chunk.childNodes;
n=list.length;
if (n>0){
for (i=0; i<n; i++){ addShadow(list[i]);}
}
}
function viewShadowSource(){
var newwin=window.open(); //Exception
newdoc=newwin.document;
insertpoints={};
var thisdoc=document.documentElement;
addShadow(thisdoc);
var longlist=newdoc.getElementsByTagName("stelt:insert");
var n=longlist.length;
var node;
for(var i=0;i<n;i++){
node=longlist[i];
node.parentNode.removeElement(node);
}
}