Newsgroup: it.comp.lang.javascript
Titolo: Caricare iframe in base orario e giorno

Ciao a tutti, devo metter mano sito di una piccola radio locale, e
volevo fare in modo che in base all'orario e al giorno della settimana,
caricasse in una determinata porzione della pagina la relativa pagina
della trasmissione (niente di particolare, ci metterò un'immagine e
qualche testo).
Al momento ho usato uno script (che mi avete aiutato a realizzare voi)
che ricarica una pagina in base all'orario:
 
<script language="JavaScript">
 <!--
function rinvia(){
var now = new Date();
var hours = now.getHours();
var min=now.getMinutes();
if (min<=9) { min="0"+min; }
var ora = ((hours<=9) ? '0'+hours : hours) + '.' + min
 
if (ora == 08.25) location.href='mattina1.html'
if (ora == 10.25) location.href='mattina2.html'
if (ora == 14.55) location.href='pom1.html'
if (ora == 15.25) location.href='pom2.html'
if (ora == 17.55) location.href='pom3html'
if (ora == 19.40) location.href='sera.html'
setTimeout("rinvia()",1000)
}
window.onload=rinvia
 
 
 // -->
 </script>
 
inq uesto modo però ogni pagina deve avere il medesimo script.
 
Quello che chieso e se è possibile mettere anche la variabile giorno
della settimana e che invece di ricaricarsi, faccia caricare la pagina
relativa dentro ad un iframe.
 
come posso fare?
 
grazie

 relativa dentro ad un iframe.
 
location sottintende l'oggetto window (window.location).
Anziché usare l'oggetto window del frame corrente, basta usare l'oggetto 
window del frame che vuoi ricaricare.
Se per esempio è il frame con name="myF" dentro la window in cui si trova 
lo script, sarà window.frames['myF'].location.href ....

 lo script, sarà window.frames['myF'].location.href ....
 
quindi dovrei fare:
if (ora >= 08.25 && ora < 10.24)
window.frames['myF'].location.href='mattina1.html'
 
e nella pagina 
<iframe name="myF"></iframe>
 
senza mettere alcun src="pagina.htm" in quanto la carica da solo?
 
grazie mille delle dritte.

visto le mie enormi carenze, avevo pensato di fare uno script per i
giorni della settimana, uno lun-ven, sabato e domenica.
all'interno delle relative pagine (lun-sab.html; sabato.html;
domenica:html) mettere i relativi script per gli orari.
Non sarà elengantissimo, ma non so come altro fare.
 
All'interno della pagina sabato.html stavo scrivendo il codice ma mi da
errore e non capisco cosa non vada:
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
">
<html xmlns="
http://www.w3.org/1999/xhtml
">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript">
 
function rinvia() {
var now = new Date();
var hours = now.getHours();
var min=now.getMinutes();
if (min<=9) { min="0"+min; }
var ora = ((hours<=9) ? '0'+hours : hours) + '.' + min
 
if (ora >= 00.00 && ora < 05.59)
window.frames['myF'].location.href='rcbnights.html'
if (ora >= 06.00 && ora < 06.59)
window.frames['myF'].location.href='pinkm.html'
if (ora >= 07.00 && ora < 09.59)
window.frames['myF'].location.href='tpxln3.html'
if (ora >= 10.00 && ora < 23.59)
window.frames['myF'].location.href='musica100.html'
setTimeout("rinvia()",1000)
}
window.onload=rinvia
 
 </script>
</head>
<body><iframe id="myf"></iframe>
</body>
</html>
 
Dreamweaver dice che c'è un errore nella riga 14:
if (ora >= 00.00 && ora < 05.59)
window.frames['myF'].location.href='rcbnights.html'
 
http://www.jslint.com/
 mi dice che c'è un errore nella riga 8:
Problem at line 8 character 1: Expected 'var' at column 5, not column 1.
var now = new Date();
 
più errori in tutte le righe...
 
aiuto....
 

 window.frames['myF'].location.href='mattina1.html'
 
Sì; userei '08.25' (stringa), magari ordina correttamente anche per 
numerici, non ho voglia di ragionarci :-/

 = new Date();
 
Non vedo errori.

 urca, no, se è solo per questo no. Vedi altra mia risposta.
 
allora, grazie ai tuoi consigli sono riuscito a farlo andare in base
all'orario senza problemi.
ora il grande passa per i giorni della settimana.
 
quello che tu proponi con lo switch sarebbe interessante, ma le mie
esperienze sono ben al di sotto della logica per poter fare uno script
da zero.
 
appena ho qualche ora (!!) provo a fare lo scritp che riconosca i giorni
della settimana.
 
grazie

 da zero.
 
Attenzione al discorso localization.
 
Sarà un qualcosa tipo (prototipo):
 
 - switch(tuaData.getDay()) {
	case 0: //es. lunedì
	case 1:
	case 2:
	case 3:
	case 4:
		//tuoi if soliti
		break;
	case 5: //sabato
		//tuoi if soliti
		break;
	case 6: //domenica
		//tuoi if soliti
		break;
	}

 qualche testo).
 
Premesso tutto quel che ti ha detto Cristiano, e presupponendo che tu
non possa usare alcun linguaggio server side:
 
a) I giorni della settimana hanno le medesime fasce orarie? O alcuni
giorni hanno fasce orarie differenti da altri?
 
b) Puoi decidere tu dove salvare come nominare i file? Ad esempio, se tu
potessi avere:
 
    // I file per la domenica
    weekday_0/morning.html
    weekday_0/evening.html
    etc..
 
    // I file per lunedì
    weekday_1/morning.html
    weekday_1/evening.html
    etc..
 
Ovviamente puoi anche avere:
 
    weekday_sunday/morning.html
    weekday_monday/evening.html
    etc..
 
Nel primo caso eviti giusto una tabella di transcodifica.
 
Perché in tal caso puoi semplificare di molto il tuo script.

 Perché in tal caso puoi semplificare di molto il tuo script.
 
dici? speriamo perché non so proprio come muovermi.

 dici? speriamo perché non so proprio come muovermi.
 
Avendo programmazione differente, non si può semplificarlo come speravo
ma qualcosa è pur possibile farla.

 ma qualcosa è pur possibile farla.
 
e come mi posso muovere?

 e come mi posso muovere?
 
Riassumendo. Hai diverse programmazioni durante la settimana, che
dipendono dal giorno della settimana in cui l'utente apre la pagina.
Le programmazioni definiscono url da caricare in certi orari.
Quindi devi:
 
- recuperare il giorno della settimana dalla data corrente
- ottenere la programmazione in base al giorno della settimana ottenuto
- recuperare l'orario dalla data corrente
- ottenere l'url usando la programmazione e l'orario ottenuti
 
Poi con l'url puoi farci quel che vuoi, tipo appunto caricarlo in un
frame o altro.
A livello di codice questo si traduce in qualcosa tipo:
 
  function getTimeTable(day) {
    switch (day) {
      case 0: // Sunday
        return [{
          before : 9.00,
          url : 'something.html'
        },
        {
          before : 19.15,
          url : 'somethingelse.html'
        }];
      case 6: // Saturday
        return [{
          before : 11.00,
          url : 'something.html'
        },
        {
          before : 21.15,
          url : 'somethingelse.html'
        }];
      default:
        return [{
          before : 6.00,
          url : 'rcbnights.html'
        },
        {
          before : 7.00,
          url : 'pinkm.html'
        },
        {
          before : 10.00,
          url : 'tpxln3.html'
        },
        {
          before : 24.00,
          url : 'musica100.html'
        }];
    }
  }
 
  function getURL(date, timeTable) {
    var time = date.getHours() + date.getMinutes() / 100;
 
    for (var i=0, item; item = timeTable[i++];) {
      if (time < item.before) {
        return item.url
      }
    }
    return timeTable[0].url;
  }
 
  var now = new Date();
  var timeTable = getTimeTable(now.getDay());
 
  var url = getURL(now, timeTable);
 
  console.log(url);
 
Mi raccomando, come ti è già stato detto, NON usare lo zero davanti a
valori numerici, perché se non sei in "use strict" JS ti calcola il
numero in base ottale.
 
In sostanza `getTimeTable` prende il giorno della settimana come
parametro, e in base ad esso restituisce un array di oggetti. Ogni
elemento dell'array definisce un oggetto con due proprietà, `before` e
`url`. E il metodo `getURL` prende un oggetto `Date` e un array
`timeTable`, e itera tutti gli elementi finché non trova che l'orario
corrente è inferiore alla proprietà `before` dell'elemento corrente
della programmazione. Questo significa che la programmazione deve essere
costruita in ordine CRESCENTE, quindi da "0" a "24". Prendi gli esempi
di `timeTable` che ho scritto nel codice.
Nota che in caso in cui non l'orario corrente sia superiore agli orari
definiti dalla programmazione, ritorna il primo elemento della stessa
(ovvero nel caso in cui le 24 non siano definite come limite). Torna
utile in casi come gli esempi della programmazione di Sabato e Domenica.

 utile in casi come gli esempi della programmazione di Sabato e Domenica.
 
non ho ben capito l'ultimo esempio... però ci provo
è un approccio diverso da quello con cui avevo iniziato.
 
grazie mille

allora, ho fatto questo:
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
">
<html xmlns="
http://www.w3.org/1999/xhtml
">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript">
 function getTimeTable(day) {
    switch (day) {
      case 0: // Sunday
        return [{
          before : 9.00,
          url : 'musica100.html'
        },
        {
          before : 19.15,
          url : 'musica100.html'
        }];
      case 6: // Saturday
        return [{
          before : 6.00,
          url : 'rcbnights.html'
        },
        {
          before : 7.00,
          url : 'pinkm.html'
        },
                {
          before : 10.00,
          url : 'tpxln3.html'
        },
                {
          before : 23.59,
          url : 'musica100.html'
        }];
      default:
        return [{
          before : 6.00,
          url : 'rcbnights.html'
        },
        {
          before : 7.00,
          url : 'pinkm.html'
        },
        {
          before : 9.30,
          url : 'tpxln25.html'
        },
        {
          before : 12.00,
          url : 'witalia.html'
        },
        {
          before : 13.00,
          url : 'melisland.html'
        },
        {
          before : 16.00,
          url : 'federicaelmi.html'
        },
        {
          before : 17.00,
          url : 'classifiche.html'
        },
        {
          before : 20.00,
          url : '5incondotta.html'
        },
        {
          before : 21.00,
          url : '10elode.html'
        },
        {
          before : 23.00,
          url : 'webmagazine.html'
        },
        {
          before : 23.59,
          url : 'danceselection.html'
        },];
    }
  }
 
  function getURL(date, timeTable) {
    var time = date.getHours() + date.getMinutes() / 100;
 
    for (var i=0, item; item = timeTable[i++];) {
      if (time < item.before) {
        return item.url
      }
    }
    return timeTable[0].url;
  }
 
  var now = new Date();
  var timeTable = getTimeTable(now.getDay());
 
  var url = getURL(now, timeTable);
 
  console.log(url);
  </script>
 
</head>
 
<body>
</body>
</html>
 
 
tutto questo è dentro un file che ho chiamato onair.html che poi si
aggiorna in base all'orario. ma purtroppo no va....
dove metto l'istruzione per caricare la pagina?

 grazie mille
 
Prego!

 dove metto l'istruzione per caricare la pagina?
 
A questo spero di averti risposto sia in questo che soprattutto nel post
precedente. :)

non sono scomparso. ho priorità decisamente più grandi. appena riprendo
in mano il progetto non mancherò diapprofittare della tua pazienza.
 
grazie

io ti chiedo scusa, ma ho difficioltà a metter mano su un codice che non
capisco.
mi potresti aiutare nel fare uno scritp che mi carichi una pagina in
base al giorno della settimana? so che faccio una cosa poco puòita, ma
almeno riesco a muovermi un pochino.
un qualche cosa tipo quello che ho fatto:
 
<script language="JavaScript">
 <!--
function rinvia(){
var now = new Date();
var hours = now.getHours();
var min=now.getMinutes();
if (min<=9) { min="0"+min; }
var ora = ((hours<=9) ? '0'+hours : hours) + '.' + min
 
if (ora == 08.25) location.href='mattina1.html'
if (ora == 10.25) location.href='mattina2.html'
if (ora == 14.55) location.href='pom1.html'
if (ora == 15.25) location.href='pom2.html'
if (ora == 17.55) location.href='pom3html'
if (ora == 19.40) location.href='sera.html'
setTimeout("rinvia()",1000)
}
window.onload=rinvia
 
 
 // -->
 </script>
 
ma invece dell'orario in base al giorno della settimana.
 
almeno riesco ad andare avanti
 
grazie

 almeno riesco ad andare avanti
 
Se ci sono cose del codice che ti ho dato che non capisci, chiedimele e
cercherò di spiegartele.
La cosa migliore sarebbe che tu riprendessi il mio post del 17 Novembre
e rispondessi a quello, se vuoi provare con questa strada.

 e rispondessi a quello, se vuoi provare con questa strada.
 
ok, provvederò a ripartire da capo come dici tu e vedere cosa non va.
 
grazie.

ecco sono pronto a fare il lavoro.
ho messo lo script:
 
<script type="text/javascript">
 
function getTimeTable(day) {
    switch (day) {
      case 0: // Sunday
        return [{
          before : 9.00,
          url : '10elode.html'
        },
        {
          before : 19.15,
          url : '5incondotta.html'
        }];
      case 6: // Saturday
        return [{
          before : 11.00,
          url : 'something.html'
        },
        {
          before : 21.15,
          url : 'classifica.html'
        }];
      default:
        return [{
          before : 6.00,
          url : 'rcbnights.html'
        },
        {
          before : 7.00,
          url : 'pinkm.html'
        },
        {
          before : 10.00,
          url : 'tpxln3.html'
        },
        {
          before : 24.00,
          url : 'musica100.html'
        }];
    }
  }
 
  function getURL(date, timeTable) {
    var time = date.getHours() + date.getMinutes() / 100;
 
    for (var i=0, item; item = timeTable[i++];) {
      if (time < item.before) {
        return item.url
      }
    }
    return timeTable[0].url;
  }
 
  var now = new Date();
  var timeTable = getTimeTable(now.getDay());
 
  var url = getURL(now, timeTable);
 
  console.log(url);
  window.frames['myF'].location.href=url;
 
 </script>
 
e nella pagina ho un iframe:
<iframe width="300" height="120" frameborder="0" name="myF"></iframe>
 
vedo perň all'inizio che c'č una parentesi quadra di chiusura senza
quella di apertura. cosa mi sono perso?
 
piů che altro vorrei capire bene le sequenze logiche

 più che altro vorrei capire bene le sequenze logiche
 
Sicuramente! La suddivisione in funzioni a sé stanti è stata fatta
appositamente per facilitare tale processo.
 
Intando, riepilogo ciò che ho già scritto in un vecchio post, ovvero
qual'è il problema che vogliamo risolvere. È importantissimo partire
dalle premesse, e che queste siano chiare:
 
Hai diverse programmazioni durante la settimana, che possono variare dal
giorno della settimana stessa in cui la pagina viene aperta.
Ogni programmazione consiste nella definizione di URL da caricare in
determinate fasce orarie.
 
Data tale premesse, il problema si suddivide in sotto problemi:
 
1. Trovare un modo per definire facilmente le varie programmazioni
2. Caricare la programmazione corretta in base al giorno della
settimana, e dalla programmazione caricare il file in base all'ora
 
Per risolvere il primo, ho usato un array di oggetti javascript, che mi
è sembrata la cosa più pulita.
 
Una volta definita la "base dati", ho suddiviso il punto 2 in:
 
2a. Ottenere la programmazione in base al giorno della settimana
2b. Ottenuta la programmazione, ottenere l'URL da caricare in base
all'orario.
 
Per il punto 2a ho creato la funzione `getTimeTable`, che prendendo come
parametro il giorno della settimana restituisce la programmazione
(timetable) associata, secondo lo schema che ho definito in precedenza
(array di oggetti javascript).
 
Per il punto 2b ho creato la funzione `getURL`, che prendendo come
parametro la data (qui, in effetti, lo cambierei, passando direttamente
l'orario) e la timetable, ritorna l'URL associato alla fascia oraria in
cui si è.
 
Se hai dubbi, su quello esposto fin qui, chiedi. Se ti è tutto chiaro,
possiamo procedere. Se vuoi dirmi che punti preferisci chiarire
piuttosto che altri, dimmi pure. O se preferisci analizzare passo passo
il codice.

 il codice.
 
a livello teorico (diciamo di analisi logica) ci siamo, in quanto le
variabili in gioco le ho capite. la mia difficoltà sta nel decifrare
questi passaggi in linguaggio di programmazione.
Nel mio caso, se almeno vedessi che con 1 variabile, il tutto
funzionasse, potrei poi modificare il calendario.
quindi, dello script che ho messo, perché non carica almeno un
contenuto?
 
ciao
 
(se poi la cosa rischia di diventare tediosa, possiamo sentirci anchre
privatamente, riportando poi qui il risultato finale.)

 privatamente, riportando poi qui il risultato finale.)
 
No, anzi, preferisco che le cose siano pubbliche e accessibili a tutti.
Anche chi non ha il medesimo problema che hai te, potrebbe trovare
spunti interessanti, oppure avere qualcosa da aggiungere. :)

vado per passi, finalmente ho trovato la consolle errori... ti chiedo
scusa, ma non sono un programmatore provetto e certe funzioni di Safari
non le conoscevo.
allora, andiamo per passi.
Mi ha riportat:
 
 
TypeError: 'undefined' is not an object (evaluating
'window.frames['myF'].location')      home.html:39
 
e la riga 39 è questa:
 
 window.frames['myF'].location.href=url;

 'window.frames['myF'].location')      home.html:39
 
Dunque, è molto chiaro questo errore. Significa che nella pagina in cui
sei, non esiste un frame con attributo `name` pari a "myF", quando
esegui questa riga.
 
Ad esempio, potrebbe significare che hai messo questo script prima
dell'iframe, nella pagina HTML. In questo caso, eseguendosi subito, non
trova l'elemento. La soluzione è:
 
a) Mettere lo script alla fine della pagina.
b) eseguire il codice al caricamento della pagina.
 
Nel caso "b" devi eseguire questo codice nell'onload o al
DOMContentLoaded. Quest'ultimo sarebbe preferibile, e in Safari
funziona, ma nelle vecchie versioni di IE ad esempio no.
 
Quindi dovresti sostituire:
 
    var now = new Date();
    var timeTable = getTimeTable(now.getDay());
 
    var url = getURL(now, timeTable);
 
    console.log(url);
    window.frames['myF'].location.href=url;
 
Con:
 
    window.onload = function() {
        var now = new Date();
        var timeTable = getTimeTable(now.getDay());
 
        var url = getURL(now, timeTable);
 
        console.log(url);
        window.frames['myF'].location.href=url;
    }
 
In pratica non fai che racchiudere il tutto in una funzione associata a
window.onload.
Il problema è che se c'è altre cose usano / useranno window.onload,
andranno a riscrevere (o tu andrai a riscriverne) il comportamento. Per
questo sarebbe preferibile mettere lo script alla fine, oppure usare
DOMContentLoaded. O, se usi jQuery o altre librerie simili, utilizzare i
metodi che loro mettono a disposizione per l'esecuzione dello script al
caricamento della pagina.

 esegui questa riga.
 
perfetto, spostato lo script e ora funziona!
ottimo!
ora provo a verificare durante la giornata come si comporta e così lo
"programmo" in base alle esigenze.
poi, nel caso di eventi speciali, faccio presto a mettere una pagina
"forzatamente" nell'iframe.
 
grazie per il momento e vediamo se va tutto bene

 grazie per il momento e vediamo se va tutto bene
 
Prego.

 allora va a eseguire `getTimeTable` per prendere quelli della settimana.
 
ora comincio a perdermi tra i post...
 
praticamente gli eventi speciali devono essere caratterizzati da:
 
getSpecialEventsTimeTable(now)
 
giusto?
quindi dovrei mettere all'inizio di tutto:
 
function getSpecialEventsTimeTable(now) {
 
poi un qualche codice che dica che nel caso in cui la data sia il
25/12/2011 ore 20,30 allora mi carichi la pagina natale.html e non mi
prendi in considerazione tutto quello che viene dopo (ovvero la
programmazione settimanale). il sarebbe interessante per gli eventi dal
vivo che esulano dalla programmazione settimanale, dovrei preparare la
pagine prima e caricarle impostando la data.
 
è questo il ragionamento?

 è questo il ragionamento?
 
Più o meno!

 specificato tre casi speciali. In pratica cosa fa:
 
e se volessi fare:
 
il tal giono evento speciale ma solo dalle ore X, altrimenti fai la
programmazione tradizionale. è possibile?
oppure parte prima dal concetto della data?

 oppure parte prima dal concetto della data?
 
Beh, parte comunque prima dal concetto della data, no? Lo hai detto tu
stesso "il tal giorno evento speciale ma solo dalle ore X", significa
partire dalla data ("il tal giorno").
 

 partire dalla data ("il tal giorno").
 
e se nel caso una sera la settimana, mettiamo il mercoledì dalle 21,30
alle 23 (che sarebbe il giono 3) ci fosse una programmazione differente
la sera, è il caso di riportare tutta la programmazione di quel giorno
oppure c'è un modo per "inserire" solo l'evento? tipo (ora vediamo se ho
capito bene):
 
considerando la programmazione "tradizionale":
 
default:
        return [{before : 6.00, url : 'onair/rcbnights.html'},
{before : 7.00, url : 'onair/pinkm.html'},
{before : 9.30, url : 'onair/tpxln25.html'},
{before : 12.00, url : 'onair/witalia.html'},
{before : 13.00, url : 'onair/melisland.html'},
{before : 16.00, url : 'onair/federicaelmi.html'},
{before : 17.00, url : 'onair/classifiche.html'},
{before : 20.00, url : 'onair/5incondotta.html'},
{before : 21.00, url : 'onair/10elode.html'},
{before : 23.00, url : 'onair/webmagazine.html'},
{before : 24.00, url : 'onair/danceselection.html'}];
 
inserirei prima del default:
 
case 3: // mercoledì
 return [{before : 23.00, url : 'onair/speciale.html'},];
 
però avendo il dato prima delle 23, non è che poi mi fa tutto il giorno
la programmazione speciale.html?

 la programmazione speciale.html?
 
Te la fa in quanto la programmazione che restituisci ha una fascia sola.

 tutto il resto. Hai esperienze di altri linguaggi di programmazione?
 
html, dinamica php quel tanto per modificare il template su wordpress a
livello elementare.
a questo punto, se uno volesse utilizzare un sistema dinamico, del tipo
con una interfaccia web dove poter gestire la cosa, il php non sarebbe
più adatto? oppure si potrebbe fare con javascript?

quindi, se volessi cambiare solo una sera la settimana, mi conviene
riportare tutto il giorno? 

allarme, su PC non va.
Ho provato oggi al lavoro su win xp con Firefox e Explorer, non carica
gli iframe.
domani leggo il messaggio di errore oggi non ho avuto tempo.
 
ciao

su firefox mi da questo errore:
window.frames.myF is undefined
 
e mi segnala nello script la riga:
 
window.frames['myF'].location.href=url;
 
come mai??


È lo stesso errore che avevi prima, ricordi? Io non ho mai visto la tua
pagina online, quindi non posso sapere com'è la struttura HTML, e come
mai hai tale problema.
Potrebbe essere un problema di cache – ovvero, continua a caricarti la
versione precedente – oppure la modifica che hai fatto per essere sicuro
che l'iframe sia presente quando esegui lo script, non è corretta.

 che l'iframe sia presente quando esegui lo script, non è corretta.
 
se vedi la sorgente della pagina vedrai quello che ho combinato.
 
ciao

 se vedi la sorgente della pagina vedrai quello che ho combinato.
 
L'errore sta qui:
 
<iframe width="400" height="60" frameborder="0" id="myF"
scrolling="no"></iframe>
 
Ovvero, come giustamente ti dice la console degli errori, non hai un
frames chiamato "myF". Questo perché, rispetto al tuo codice originale,
che secondo i post che hai scritto era questo:
 
<iframe width="300" height="120" frameborder="0" name="myF"></iframe>
 
Hai sostituito `name` con `id`.
 
E, come più volte detto in questo NG, sono due cose completamente
diverse – e dovrebbero avere anche valori diversi.
Il che significa che se vuoi accedere tramite `window.frames` a tale
iframe, devi avere `name`, non `id`, esattamente come avevi prima.
 
Se, per qualche motivo, preferisci mantenere l'id, allora devi cambiare
il tuo codice. Invece di:
 
    window.frames["myF"].location.href = url;
 
Devi avere:
 
    document.getElementById("myF").contentWindow.location.href = url;

     document.getElementById("myF").contentWindow.location.href = url;
 
corretto, dopo provo sul PC per vedere come va.
 
per l'altra domanda che avevo posto nell'altro post:
quindi, se volessi cambiare solo una sera la settimana, mi conviene
riportare tutto il giorno? 
 
era per capire cosa sarebbe meglio nel caso di una sera la settimana
cambia la programmazione di una sera. se devo riportare tutta la
progrmmazione del giorno o solo della sera.
 
grazie mille del preziosissiomo aiuto.

 grazie mille del preziosissiomo aiuto.
 
Prego!

 più adatto? oppure si potrebbe fare con javascript?
 
Si potrebbe fare con JS, useresti PHP unicamente per salvare il file su
server.
Comunque, se hai conoscenze di PHP, probabilmente tutto questo sarebbe
stato meglio farlo in PHP. :)