[KSS-checkins] r50793 - kukit/kukit.js/branch/improve-demos/kukit

jone at codespeak.net jone at codespeak.net
Sun Jan 20 10:46:33 CET 2008


Author: jone
Date: Sun Jan 20 10:46:31 2008
New Revision: 50793

Modified:
   kukit/kukit.js/branch/improve-demos/kukit/dom.js
   kukit/kukit.js/branch/improve-demos/kukit/plugin.js
Log:
Fix for tbody-insertion in firefox


Modified: kukit/kukit.js/branch/improve-demos/kukit/dom.js
==============================================================================
--- kukit/kukit.js/branch/improve-demos/kukit/dom.js	(original)
+++ kukit/kukit.js/branch/improve-demos/kukit/dom.js	Sun Jan 20 10:46:31 2008
@@ -56,9 +56,16 @@
     Sarissa.clearChildNodes(node);
 };
 
-dom.parseHTMLNodes = function(txt){
-    var node = document.createElement('div');
-    node.innerHTML = txt;
+dom.parseHTMLNodes = function(txt, targetNode){
+    var tagName = targetNode.tagName;
+    var tbody = false;
+    if(tagName.toLowerCase()=='tbody') {
+        // special treatment of tbody because of ff2 behaviour
+        var node = dom.parseHTMLNodesForTBody(txt);
+    } else {
+        var node = document.createElement(tagName);
+        node.innerHTML = txt;
+    }
     var resultNodes = [];
     for (var i=0; i<node.childNodes.length; i++) {
         resultNodes.push(node.childNodes.item(i));
@@ -66,6 +73,14 @@
     return resultNodes;
 };
 
+dom.parseHTMLNodesForTBody = function(txt) {
+    var node = document.createElement('table');
+    if(txt.indexOf('<tbody')==-1) {
+        node.innerHTML = '<tbody>' + txt + '</tbody>';
+    }
+    return node.firstChild;
+};
+
 /*
 *  really the query should start from the document root, but
 *  limited to inNodes subtrees!

Modified: kukit/kukit.js/branch/improve-demos/kukit/plugin.js
==============================================================================
--- kukit/kukit.js/branch/improve-demos/kukit/plugin.js	(original)
+++ kukit/kukit.js/branch/improve-demos/kukit/plugin.js	Sun Jan 20 10:46:31 2008
@@ -685,11 +685,11 @@
     oper.evaluateParameters(['html'], {'withKssSetup':true});
     oper.evalBool('withKssSetup');
     var node = oper.node;
-    var elements = kukit.dom.parseHTMLNodes(oper.parms.html);
+    var parentNode = node.parentNode;
+    var elements = kukit.dom.parseHTMLNodes(oper.parms.html, parentNode);
     var length = elements.length;
 ;;; kukit.logDebug(length + ' nodes inserted.');
     if (length > 0) {
-        var parentNode = node.parentNode;
         var insertedNodes = [];
         // insert the last node
         var next = elements[length-1];
@@ -759,8 +759,8 @@
 ;;; oper.componentName = '[insertHTMLAfter] action';
     oper.evaluateParameters(['html'], {'withKssSetup':true});
     oper.evalBool('withKssSetup');
-    var content = kukit.dom.parseHTMLNodes(oper.parms.html);
     var parentNode = oper.node.parentNode;
+    var content = kukit.dom.parseHTMLNodes(oper.parms.html, parentNode);
     var toNode = kukit.dom.getNextSiblingTag(oper.node);
     if (toNode == null) {
         kukit.dom.appendChildren(content, parentNode);
@@ -780,9 +780,9 @@
 ;;; oper.componentName = '[insertHTMLBefore] action';
     oper.evaluateParameters(['html'], {'withKssSetup':true});
     oper.evalBool('withKssSetup');
-    var content = kukit.dom.parseHTMLNodes(oper.parms.html);
     var toNode = oper.node;
     var parentNode = toNode.parentNode;
+    var content = kukit.dom.parseHTMLNodes(oper.parms.html, parentNode);
     kukit.dom.insertBefore(content, parentNode, toNode);
 ;;; kukit.logDebug(content.length + ' nodes inserted.');
     // update the events for the new nodes
@@ -797,7 +797,7 @@
 ;;; oper.componentName = '[insertHTMLAsLastChild] action';
     oper.evaluateParameters(['html'], {'withKssSetup':true});
     oper.evalBool('withKssSetup');
-    var content = kukit.dom.parseHTMLNodes(oper.parms.html);
+    var content = kukit.dom.parseHTMLNodes(oper.parms.html, oper.node);
     kukit.dom.appendChildren(content, oper.node);
 ;;; kukit.logDebug(content.length + ' nodes inserted.');
     // update the events for the new nodes
@@ -812,7 +812,7 @@
 ;;; oper.componentName = '[insertHTMLAsFirstChild] action';
     oper.evaluateParameters(['html'], {'withKssSetup':true});
     oper.evalBool('withKssSetup');
-    var content = kukit.dom.parseHTMLNodes(oper.parms.html);
+    var content = kukit.dom.parseHTMLNodes(oper.parms.html, oper.node);
     var parentNode = oper.node;
     var toNode = parentNode.firstChild;
     if (toNode == null) {


More information about the Kukit-checkins mailing list