Xul: динамическое заполнение hbox vboxes приводит к расположению элементов по вертикали - PullRequest
0 голосов
/ 26 января 2011

Я пытаюсь заполнить во время выполнения элементы hbox элементами vboxes, используя следующий код:

код Xul:

<hbox style="overflow:auto;" id="canvasContainer"> </hbox>

Javascript код:

  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);
  }

В результате холст и метки отображаются вертикально один под другим. Знаете ли вы, откуда возникла проблема? Может ли быть так, что невозможно заполнять поля динамически? Это ошибка в Xulrunner? У вас есть идея возможного обходного пути без использования сеток?

1 Ответ

2 голосов
/ 26 января 2011

Проблема была в строке: let canvasVbox = document.createElementNS ("http://www.w3.org/1999/xhtml",'vbox');

VBox не является частью xhtml, а частью синтаксиса xul, поэтому мне просто нужно заменить" http://www.w3.org/1999/xhtml" на "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" и теперь это работает.

...