XUL: Dynamisch ein HBox mit Vboxes führt zu Elementen, die vertikal platziert werden
-
24-10-2019 - |
Frage
Ich versuche, in Laufzeit und Hbox -Elemente mit Vboxes -Elementen mit dem folgenden Code zu fopulieren:
XUL -Code:
<hbox style="overflow:auto;" id="canvasContainer"> </hbox>
JavaScript -Code:
this.canvasContainer = document.getElementById("canvasContainer");
for(var i = 0;i<k;i++){
let imgCanvas = document.createElementNS("http://www.w3.org/1999/xhtml",'html:canvas');
imgCanvas.setAttribute("width",200);
imgCanvas.setAttribute("height",150);
imgCanvas.getContext("2d").fillRect(0,0,200,150);
let canvasVbox = document.createElementNS("http://www.w3.org/1999/xhtml",'vbox');
this.canvasContainer.appendChild(canvasVbox);
let canvasLabel = document.createElement("label");
canvasLabel.setAttribute("value",i);
canvasLabel.setAttribute("flex",1);
canvasVbox.setAttribute("flex",1);
canvasVbox.appendChild(imgCanvas);
canvasVbox.appendChild(canvasLabel);
this.canvasContainer.appendChild(canvasVbox);
}
Dies führt dazu, dass Leinwand und Etiketten vertikal unter dem anderen angezeigt werden. Weißt du, dass das Problem von kommen könnte? Könnte es sein, dass es nicht möglich ist, Kästchen dynamisch zu füllen? Ist es ein Fehler in Xulrunner? Haben Sie eine Vorstellung von einer möglichen Problemumgehung, ohne Netze zu verwenden?
Lösung
Das Problem war die Zeile: let canvasvbox = document.createelementns ("http://www.w3.org/1999/xhtml", 'vbox');
Vbox ist nicht Teil von XHTML, sondern Teil der XUL -Syntax. Daher musste ich nur "http://www.w3.org/1999/xhtml" durch "http://www.mozilla.org/keymaster/gatekeeper/ ersetzen da.is.only.xul "und jetzt funktioniert es.