Obrigado p3dro, mas o problema não está na atribuição do valor da iframe, mas em colocar conteúdos de ficheiros, dinâmicamente, num textarea (o iframe era só um artifício). E resolvi o problema; exponho a solução:
1) o conteúdo do iframe, que é atribuido através do atributo src dinâmicamente, vai ser copiado para o textarea (t1);
2) os ficheiros com os conteúdos no textarea estão no formato txt, mas o iFrame não consegue-os visualizar:
a) fiz um ficheiro em PHP (p) que obtém um identificador do ficheiro, por $_GET, abre-o e gera um ficheiro HTML, com um textarea (t2) onde é colocado o conteúdo do ficheiro;
3) quando foram seleccionadas as opções para preencherem o conteúdo de t1, o src do iframe é alterado, usando o ficheiro p
a) é feita uma função, que é chamada nessas condições, e que atribui o valor de src do iframe
4) Infelizmente, se nessa mesma função a seguir obter o conteúdo de t2 no iframe e copiá-lo para t1, os valores não são actualizados correctamente
a) fiz uma função que é chamada quando a iframe é carregada (com o evento onload)
b) essa função obtém t1, obtém t2 e copia o conteúdo de t2 para t1
5) a iframe está invisível (é apenas um artifício para carregar ficheiros de modo portável e facilmente)
O código parcial:
Código:
<iframe onload="[B]iframe_onload()[/B]"
style="display: none"
src="../caracteristicas/print.php?args=base" id="caracteristicas_iframe">
</iframe>
<script type="text/javascript">
<!--
function [B]update_caracteristicas[/B](tipologia, natureza)
{
var tipologia_id = tipologia.options[tipologia.selectedIndex].value;
var natureza_id = natureza.options[natureza.selectedIndex].value;
if( tipologia_id == 0 || natureza_id == 0 )
{
var args = 'base';
}
else
{
var args = tipologia_id + '-' + natureza_id;
}
var path = '../caracteristicas/print.[B]php[/B]?args=' + args;
var caracteristicas_iframe = document.getElementById('caracteristicas_iframe');
caracteristicas_iframe.[B]src[/B] = path;
}
function [B]iframe_onload()[/B]
{
var caracteristicas = document.getElementById('caracteristicas');
var caracteristicas_iframe = document.getElementById('caracteristicas_iframe');
[B]var oDoc = caracteristicas_iframe.contentWindow ||
caracteristicas_iframe.contentDocument;
if (oDoc.document)
{
oDoc = oDoc.document;
}
var val = oDoc.getElementById('caracteristicas');
[/B]
if( val.value )
{
caracteristicas.[B]value[/B] = val.[B]value[/B];
}
}
-->
</script>
Código:
<select name="tipologia_id"
[B]onchange="update_caracteristicas(this, natureza_id)[/B]"
>
etc.
A parte onde está oDoc foi usado de uma dica de um site (infelizmente esqueci-me do endereço :-( mas também vejo muitos a usarem um código semelhante).
Obrigado na mesma :-)
Pelo menos fica aqui uma dica para quem quiser ler ficheiros, e colocar os seus conteúdos em elementos HTML, com a ajuda de JavaScript, PHP e CSS.