Hem.. giusto.. non ho detto alla funzione che cos'era riquadro, quindi era ovvio che non funzionasse..
Cmq questa versione:
panel.js
Codice HTML:
var bHtmlMode = false;
var str_iFrameDoc = (document.all)? "document.frames(\"Composition\").document\;": "document.getElementById(\"Composition\").contentDocument\;";
// Inizializzazione
onload = initialize;
function initialize() {
iFrameDoc = eval(str_iFrameDoc);
iFrameDoc.open();
iFrameDoc.write("<html><body MONOSPACE style='font:10pt arial,sans-serif'></body></html>");
iFrameDoc.close();
iFrameDoc.designMode = "On";
document.getElementById("switchMode").checked = false;
if (!document.all) {
document.getElementById("taglia").style.visibility = "hidden";
document.getElementById("copia").style.visibility = "hidden";
document.getElementById("incolla").style.visibility = "hidden";
}
}
// Porta il focus al riquadro di testo
function setFocus() {
if (document.all)
document.frames("Composition").focus();
else
document.getElementById('Composition').contentWindow.focus()
return;
}
// Controlla se la toolbar è abilitata nella modalità testo
function validateMode() {
if (! bHtmlMode)
return true;
alert("Deselezionare \"Visualizza HTML\" per utilizzare le barre degli strumenti");
setFocus();
return false;
}
// Formatta il testo
function formatC(what,opt) {
if (!validateMode())
return;
iFrameDoc = eval(str_iFrameDoc);
iFrameDoc.execCommand(what,false,opt);
setFocus();
}
//Scambia tra la modalità testo e la modalità HTML.
function setMode(newMode) {
var testo;
bHtmlMode = newMode;
iFrameDoc = eval(str_iFrameDoc);
riquadro = iFrameDoc.body;
if (document.all) {
if (bHtmlMode) {
testo = riquadro.innerHTML;
riquadro.innerText = testo;
} else {
testo = riquadro.innerText;
riquadro.innerHTML = testo;
}
} else if(document.getElementById && document.createTextNode) {
if (bHtmlMode) {
testo = document.createTextNode(riquadro.innerHTML);
riquadro.innerHTML = "";
riquadro.appendChild(testo);
} else {
testo = document.createRange();
testo.selectNodeContents(riquadro);
riquadro.innerHTML = testo.toString();
}
}
setFocus();
}
function submitForm () {
iFrameDoc = eval(str_iFrameDoc);
riquadro = iFrameDoc.body;
bHtmlMode = eval ((document.all)? "document.forms[\"composeForm\"].switchMode.checked\;": "document.getElementById(\"composeForm\").switchMode.checked\;");
testo = '';
if (document.all) {
if (bHtmlMode) {
testo = riquadro.innerText;
} else {
testo = riquadro.innerHTML;
}
} else if(document.getElementById && document.createTextNode) {
if (bHtmlMode) {
testo = document.createTextNode(riquadro.innerHTML);
riquadro.innerHTML = "";
riquadro.appendChild(testo);
} else {
testo = document.createRange();
testo.selectNodeContents(riquadro);
riquadro.innerHTML = testo.toString();
}
}
document.forms['mainForm'].follia.value = testo;
document.forms['mainForm'].submit ();
}
composition.php
Codice HTML:
<form action="#" method="POST" name="composeForm" id="composeForm">
<br><br>
<hr>
<table border="0" cellpadding="5" cellspacing="0" bgcolor="#FFFFFF" width="100%" class="greyborder">
<tr>
<td>
<div id="ParaToolbar">
<select id="ParagraphStyle" onchange="formatC('formatBlock',this[this.selectedIndex].value);this.selectedIndex=0">
<option selected>Paragrafo</option>
<option value="<H1>">Titolo 1 <H1></option>
<option value="<H2>">Titolo 2 <H2></option>
<option value="<H3>">Titolo 3 <H3></option>
<option value="<H4>">Titolo 4 <H4></option>
<option value="<H5>">Titolo 5 <H5></option>
<option value="<H6>">Titolo 6 <H6></option>
<option value="<PRE>">Formattato <PRE></option>
</select>
<select id="FontName" onchange="formatC('fontname',this[this.selectedIndex].value);this.selectedIndex=0">
<option class="heading" selected>Tipo Carattere</option>
<option value="Arial">Arial</option>
<option value="Arial Black">Arial Black</option>
<option value="Arial Narrow">Arial Narrow</option>
<option value="Comic Sans MS">Comic Sans MS</option>
<option value="Courier New">Courier New</option>
<option value="System">System</option>
<option value="Times New Roman">Times New Roman</option>
<option value="Verdana">Verdana</option>
<option value="Wingdings">Wingdings</option>
</select>
<select id="FontSize" onchange="formatC('fontsize',this[this.selectedIndex].value);this.selectedIndex=0">
<option class="heading" selected>Dimensione</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
</select>
<select id="FontColor" onchange="formatC('forecolor',this[this.selectedIndex].value);this.selectedIndex=0">
<option class="heading" selected>Colore Testo</option>
<option value="red">rosso</option>
<option value="blue">blu</option>
<option value="green">verde</option>
<option value="black">nero</option>
</select>
<select id="FontBackColor" onchange="formatC('backcolor',this[this.selectedIndex].value);this.selectedIndex=0">
<option class="heading" selected>Colore Sfondo</option>
<option value="red">rosso</option>
<option value="blue">blu</option>
<option value="green">verde</option>
<option value="black">nero</option>
<option value="yellow">giallo</option>
<option value="">BIANCO</option>
</select>
<hr>
<div id="EditMode">
<input type=checkbox name="switchMode" id="switchMode" onclick="setMode(switchMode.checked)">
<font color="#000000"><b>Visualizza HTML</b> | </font>
<a href="Javascript:formatC('removeFormat')"><b>Rimuovi Formattazione Carattere</b></a>
</div>
<hr>
</div>
<table>
<tr>
<td>
<div title="Grassetto" onclick="formatC('bold');">
<img src="img/bold.gif">
</div>
</td>
<td>
<div title="Corsivo" onclick="formatC('italic')">
<img src="img/italic.gif">
</div>
</td>
<td>
<div title="Sottolineato" onclick="formatC('underline')">
<img src="img/under.gif">
</div>
</td>
<td>
<div title="Allinea a sinistra" onclick="formatC('justifyleft')">
<img src="img/aleft.gif">
</div>
</td>
<td>
<div title="Centra" onclick="formatC('justifycenter')">
<img src="img/center.gif">
</div>
</td>
<td>
<div title="Allinea a destra" onclick="formatC('justifyright')">
<img src="img/aright.gif">
</div>
</td>
<td>
<div title="Elenco puntato" onclick="formatC('insertorderedlist')">
<img src="img/nlist.gif">
</div>
</td>
<td>
<div title="Elenco numerato" onclick="formatC('insertunorderedlist')">
<img src="img/blist.gif">
</div>
</td>
<td>
<div title="Riduci rientro" onclick="formatC('outdent')">
<img src="img/ileft.gif">
</div>
</td>
<td>
<div title="Aumenta rientro" onclick="formatC('indent')">
<img src="img/iright.gif" >
</div>
</td>
<td>
<div id="taglia" title="Taglia" onclick="formatC('cut')">
<img src="img/cut.gif">
</div>
</td>
<td>
<div id="copia" title="Copia" onclick="formatC('copy')">
<img src="img/copy.gif">
</div>
</td>
<td>
<div id="incolla" title="Incolla" onclick="formatC('paste')">
<img src="img/paste.gif">
</div>
</td>
</tr>
</table>
<iframe class="Composition" width="100%" id="Composition" height="190">
</iframe>
</td>
</tr>
</table>
</form>
almeno con IE funziona, ma devi fare attenzione nella pagina principale di questo script: in compose.php è presente un form, e non è possibile inserire un form all'interno di un altro form, quindi ti consiglio una cosa di questo tipo:
pagina principale
Codice PHP:
<script type="text/javascript" language="JavaScript" src="panel.js"></script>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post" name="mainForm">
<input type="hidden" name="follia" />
<table class="am" align="center" cellspacing="0" cellpadding="0">
[...]
</table>
</form>
<table class="am" align="center" cellspacing="0" cellpadding="0">
<tr><td>
<?php include "composition.php"?></td></tr>
<tr><td class="am_footer" colspan="2"><input type="button" name="submit" value="Aggiungi" class="submit" onClick="submitForm();"/></td></tr>
</table>
Ora cerco di capire perchè con il fido Firefox non funzia ^_^