Tjenare igen, Jag har löst problemet på följande sätt , ger dig en fingervisning för den kompletta lösningen är rätt komplex och innehåller också en massa andra saker.ContentEditable igen
Att detta skall vara så svårt då!! Varför måste jag markera text i DIV:en för att få in tabellen där jag vill ha den.
Som det är nu så måste jag markera text i DIVen för att tabellen skall placeras i DIVen. Annars placeras den utanför.
Har någon en lösning? Har suttit med detta för länge nu.
Kolla in exemplet
http://www.comaround.se/beta/editor/editor2.asp
EDIT:
Jag löste det genom att sätt focus på diven i funktionen
<code>
function createTable(cols,rows,width,border,ali) {
document.getElementById("edit").focus();
var d = document.selection.createRange();
var oRow;
var iRow, iCol;
var s = "<table border='" + border + "' align='" + ali + "' width='" + width + "' contenteditable='true' cellpadding='0' cellspacing='0'>"
for (iRow = 0; iRow < rows; iRow++) {
s+='<tr>'
for (iCol = 0; iCol < cols; iCol++) {
s+='<td> </td>'
}
s+='</tr>'
}
d.innerHTML = s
d.pasteHTML(s)
d.pasteHTML("</table>")
d.select()
}
</code>
//PutteSv: ContentEditable igen
Sätt först ett id på diven. (edit)
Skall sägas också att följande kod är IE specifik, för ex. Mozilla krävs en annan hantering av den sista delen av koden. Även om du inte kan använda exemplet rakt av så kanske det kan ge dig lite fler ideer.
Använd följande kod för att skapa tabellen:
ierange = document.getElementById('edit').contentWindow.document.selection.createRange();
e = document.getElementById("edit");
table = e.contentWindow.document.createElement("table");
table.setAttribute("border", bordervalue);
table.setAttribute("cellPadding", cellpaddingvalue);
table.setAttribute("cellSpacing", cellspacingvalue);
tbody = e.contentWindow.document.createElement("tbody");
// loopa här för att skapa antal rader
tr =e.contentWindow.document.createElement("tr");
tr.setAttribute("height","5");
tr.setAttribute("bgColor","#FFFFFF");
// loopa igen för att skapa kolumner
td =e.contentWindow.document.createElement("td");
td.setAttribute("height","5");
tr.appendChild(td);
tbody.appendChild(tr);
table.appendChild(tbody);
document.getElementById("edit").contentWindow.focus();
var c = ierange.parentElement();
vad d = document.getElementById("edit").contentWindow.document.createElement("DIV")
var t = d.appendChild(insertNode);
var myhtml = d.innerHTML;
ierange.pasteHTML(myhtml);
Men om det finns någon som har en smidigare lösning på uppgiften som tittar jag gärna på den.
/C