I particularly like your++ short functional solution.
As for the IE problem… it seems it is more averse to the remove of the original node (also implicite in the original solution with insertBefore.)
So here is a workaround for the IE, avoiding the remove by inserting a cloneNode and display:none the original node.
<script type="text/javascript">
( function() {
var td = document.getElementById( 'nodelet_container' ).parentNode
+;
var tr = td.parentNode;
tr.insertBefore( td.cloneNode(true), tr.firstChild );
td.style.display= "none";
} )();
</script>
This being a workaround has a shortcoming: The script interferes (aborts) the cloneNode, effectively cutting the nodelet tower under "Free Nodelet" at its base. So the "Free Nodelet" has to be the last (highest number) in your nodelet settings.
Mixed users (FF/IE/...) might use this out of the box, or can use a browser switch as in:
<script type="text/javascript">
( function() {
var td = document.getElementById( 'nodelet_container' ).parentNode
+;
var tr = td.parentNode;
if (document.all) { // IE
tr.insertBefore( td.cloneNode(true), tr.firstChild );
td.style.display= "none";
} else { // w3c
tr.insertBefore( td, tr.firstChild );
}
} )();
</script>
also avoiding the free nodelet cut in non-IE.
|