replace-node

Der Aufruf (replace-node node-id html) erzeugt eine JavaScript Zeichenkette, die das innerHTML des DOM Nodes mit der Id node-id (ein Symbol) durch das HTML aus html (eine Zeichenkette) ersetzt, wenn es im Browser ausgeführt wird. Der erzeugte JavaScript Quellcode setzt das dojo Toolkit 1.2 oder 1.3 voraus.

{
  /* Teil 1 */
  var node=dojo.byId('... node-id ...');
  try
  {
    var list=dojo.query('[widgetId]', node);
    dojo.forEach(list, function(innernode)
    {
      var widget=dijit.byNode(innernode);
      widget.destroy();
    });
    while(node.firstChild)
    {
      dojo._destroyElement(node.firstChild);
    }
  }
  catch(e)
  {
    console.error('replace-node cannot destroy', e);
  }
  /* Teil 2 */
  try
  {
    dojo.html.set(node, '... html ...', {parseContent:true});
  }
  catch(e)
  {
    console.error('replace-node cannot set', e);
  }
};

Der erste Teil des Skripts identifiziert alle Widgets in dem zu ersetzenden HTML-Code und ruft deren Destruktoren auf. Danach wird der DOM-Baum freigegeben. Im zweiten Teil des Skripts wird das innerHTML des Nodes gesetzt und die eventuell im neuen Inhalt des Nodes enthaltenen Widgets erzeugt und initialisiert.

Die Funktion replace-node ist wichtig bei der Erstellung von Script Actions (siehe Script Action und Action).