0

次のコードを使用して、実行時に 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 のバグですか? グリッドを使用せずに可能な回避策のアイデアはありますか?

4

1 に答える 1

2

問題は次の行でした: 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」で、今では動作します。

于 2011-01-26T14:06:11.447 に答える