oki :-)
Jeg kører det hele fra javascript (en del af koden er hugget direkte fra
http://www.kevinroth.com/rte/demo.htm)
Min iframe skrives ud af en funktion:
document.writeln('<iframe id="' + rte + '" name="' + rte + '" class="RTEIframe" style="width:548px;height:' + height + 'px;" frameborder="0"></iframe>');
Følgende funktion køres:
function enableDesignMode(rte, html, readOnly) {
var frameHtml = "<html id=\"" + rte + "\">\n";
frameHtml += "<head>\n";
//to reference your stylesheet, set href property below to your stylesheet path and uncomment
if (cssFile.length > 0) {
frameHtml += "<link media=\"all\" type=\"text/css\" href=\"" + cssFile + "\" rel=\"stylesheet\">\n";
} else {
frameHtml += "<style>\n";
frameHtml += "body {\n";
frameHtml += " background: #FFFFFF;\n";
frameHtml += " margin: 0px;\n";
frameHtml += " padding: 0px;\n";
frameHtml += "}\n";
frameHtml += "</style>\n";
}
frameHtml += "</head>\n";
frameHtml += "<body>\n";
frameHtml += html + "\n";
frameHtml += "</body>\n";
frameHtml += "</html>";
if (document.all) {
var oRTE = frames[rte].document;
oRTE.open();
oRTE.write(frameHtml);
oRTE.close();
if (!readOnly) oRTE.designMode = "On";
} else {
try {
if (!readOnly) document.getElementById(rte).contentDocument.designMode = "on";
try {
var oRTE = document.getElementById(rte).contentWindow.document;
oRTE.open();
oRTE.write(frameHtml);
oRTE.close();
if (isGecko && !readOnly) {
//attach a keyboard handler for gecko browsers to make keyboard shortcuts work
oRTE.addEventListener("keypress", kb_handler, true);
}
} catch (e) {
alert("Error preloading content.");
}
} catch (e) {
//gecko may take some time to enable design mode.
//Keep looping until able to set.
if (isGecko) {
setTimeout("enableDesignMode('" + rte + "', '" + html + "', " + readOnly + ");", 10);
} else {
return false;
}
}
}
var oRTE = document.getElementById(rte).contentWindow.document;
F_addEvents(oRTE, ["keydown", "keypress", "mousedown", "mouseup", "drag"],
function (event) {
return updateConfigs(isIE ? document.getElementById(rte).contentWindow.event : event);
});
}
F_addEvent = function(el, evname, func) {
if (isIE) {
el.attachEvent("on" + evname, func);
} else {
el.addEventListener(evname, func, true);
}
};
F_addEvents = function(el, evs, func) {
for (var i in evs) {
F_addEvent(el, evs[i], func);
}
};
Og så denne når man klikker på et element:
function updateConfigs(evt){
if (isIE) {
strElement = evt.srcElement;
} else {
strElement = evt.target;
}
end function
Det jeg så egentlig gerne vil er at kunne markere dette element, eller rettere sagt 'fange' elementet og smide det i et link, sammen med underliggende elementer som man så kan klikke på.
Kan jo sagtens finde frem til de underliggende elementer med parentNode - men det med at markere dem og gemme dem i links - det går ikke for godt :-D