You can make new tags/components using JavaScript blocks. Simply include a script iterating through all the script blocks in your page:
<script language="javascript">
function writeComponent(){
var scriptblocks = document.getElementsByTagName("script");
for (i=0;i < scriptblocks.length;i++){
//iterate through all the script blocks
if (scriptblocks[i].innerHTML== "writeComponent()"){
//initialize your component as javascript object
var classname = scriptblocks[i].getAttribute("classname");
eval("var component = new " + classname + "()");
//the JsObject should implement a getElement() function
//so is can be retrieved and replace the scriptblock element
var parent = scriptblocks[i].parentNode;
parent.replaceChild(component.getElement(),scriptblocks[i]);
var attribs = scriptblocks[i].attributes;
//you can copy attribute values in your constructor
//or set the style of the component element
}
}
}
</script>
<html> etc...
<script language="javascript" classname="myCompClass">writeComponent()</script>
As soon as the browser renders the scriptblock, the function is called and the browser replaces the script block with whatever component you've written.