Newsgroup: it.comp.lang.javascript
Titolo: layer simulato in IE

Ho una funzione che mi fornisce data e ora di sistema. Per visualizzarla in
modo che i secondi trascorrano sullo schermo, ho utilizzato un
document.write all'interno di un layer che tuttavia non funziona in IE.
L'unica alternativa sarebbe una casella di testo, ma non è esteticamente il
massimo.
C'è un modo per avere la possibilità di simulare in IE l'effetto del
document.write all'interno del layer?
Ecco il codice dello script, che chiaramente in IE non funziona:
<body onLoad="time()">
<layer name="ora"></layer>
<script language="JavaScript">
function time()    {
... // dopo varie peripezie ottengo data e ora di sistema nella variabile
DayDateTime
document.ora.document.open()
document.ora.document.write("<font face='Arial'><small>" + DayDateTime +
"</small></font>")
document.ora.document.close()
document.ora.document.clear
setTimeout("time()",1000)  }
</SCRIPT>

 massimo.
Ciao!
Guarda se questo ti piace ..........al limite lo modifichi...........
<HTML>
<HEAD>
<STYLE>
.js {
  color: white;
  background-color: orange;
}
</STYLE>
<SCRIPT>
var loaded = false;
if (document.layers)
  document.write(
'<STYLE>.rewritable { position: absolute; }<\/STYLE>'
  );
function Clock (offsetSec, style) {
 
this.id
 = Clock.cnt;
  Clock.clocks[Clock.cnt++] = this;
  this.offsetSec = offsetSec || 0;
  this.style = style || '';
  this.writeHTML();
  this.startTimer();
}
function Clock_writeHTML () {
  var html = '';
  if (document.layers) {
    html += '<SPAN';
    html += ' ID="Clock' + 
this.id
 + '"';
    html += ' CLASS="rewritable"';
    html += '>';
    html += '<SPAN';
    html += this.style ? ' CLASS="' + this.style + '"' : '';
    html += '>';
    html += this.formatTime();
    html += '<\/SPAN>';
    html += '<\/SPAN>';
  }
  else {
    html += '<SPAN';
    html += ' ID="Clock' + 
this.id
 + '"';
    html += this.style ? ' CLASS="' + this.style + '"' : '';
    html += '>';
    html += this.formatTime();
    html += '<\/SPAN>';
  }
  document.write(html);
}
Clock.prototype.writeHTML = Clock_writeHTML;
function Clock_formatTime () {
  var time = new Date();
  time.setTime(time.getTime() + this.offsetSec * 1000);
  var hours = time.getHours();
  var minutes = time.getMinutes();
  var seconds = time.getSeconds();
  var html = '';
  html += hours < 10 ? '0' + hours : hours;
  html += ':';
  html += minutes < 10 ? '0' + minutes : minutes;
  html += ':';
  html += seconds < 10 ? '0' + seconds : seconds;
  return html;
}
Clock.prototype.formatTime = Clock_formatTime;
function Clock_startTimer () {
  this.tid = setInterval('Clock.clocks[' + 
this.id
 + '].updateTime()',
1000);
}
Clock.prototype.startTimer = Clock_startTimer;
function Clock_updateTime () {
  if (document.all)
    document.all['Clock' + 
this.id
].innerHTML = this.formatTime();
  else if (document.getElementById)
    document.getElementById('Clock' + 
this.id
).firstChild.nodeValue =
      this.formatTime();
  else if (document.layers && loaded) {
    var l = document['Clock' + 
this.id
];
    if (!l.ol) {
      var ol = l.ol = new Layer(l.clip.width);
      ol.clip.height = l.clip.height;
      ol.left = l.pageX; ol.top = l.pageY;
      ol.visibility = 'show';
      l.visibility = 'hide';
    }
    var ol = l.ol;
    var html = '';
    html += '<SPAN';
    html += this.style ? ' CLASS="' + this.style + '"' : '';
    html += '>';
    html += this.formatTime();
    html += '<\/SPAN>';
    ol.document.open();
    ol.document.write(html);
    ol.document.close();
  }
}
Clock.prototype.updateTime = Clock_updateTime;
Clock.cnt = 0;
Clock.clocks = new Array();
function init () {
  loaded = true;
}
</SCRIPT>
</HEAD>
<BODY ONLOAD="init()">
Local time:
<SCRIPT>
new Clock(0, 'js');
</SCRIPT>
<BR>
GMT:
<SCRIPT>
var local = new Date();
var offset = local.getTimezoneOffset() * 60;
new Clock(offset);
</SCRIPT>
</BODY>
</HTML>
____________________
andreotta fabiano
WebMªster ATI POWER s.n.c.
andr...@atipower.it
http://www.atipower.it
http://www.afdsoftware.freeweb.org
____________________

 massimo.
