14 messaggi dal 21 agosto 2007
buongiorno a tutti,ho questo problema.
ho un progetto WEB sviluppato in visual studio 2008 ASP.NET.
è stato scritto usando una macchina in MS Vista, ho acquistato una macchina con windows 7 64Bit, ho installato l'ambiente di sviluppo e copiato la cartella del progetto.

appena lo lancio mi si verifica un errore sulla seuqnete istruzione :
window.setTimeout("parent.document.getElementById('App').src = '/XXX/Login.aspx'", 1000, 'javascript');


l'errore è :
Errore di run-time di Microsoft JScript: Impossibile impostare il valore della proprietà 'src': oggetto nullo o non definito

lo stesso si verifica su una macchina con windows 7 32 Bit e MS-VS 2008

il progetto compilato sulla vecchia macchina e pubblicato funziona perfettamente anche sulla mia macchina nuova.

Ho fatto ricerche in internet su questo messaggio di errore ma non ho trovato niente che si riferisse al mio problema specifico.

grazie ancora
Gerardo
11.884 messaggi dal 09 febbraio 2002
Contributi
Ciao,
l'errore indica che nessun elemento con id="App" è stato trovato nella pagina-genitore che contiene il frame (o iframe) corrente.

Potrebbe essere che l'elemento "App" non esista o che si chiami in un altro modo ma, dato che su varie macchine funziona, è più probabile che la pagina genitore non sia stata caricata del tutto quando il javascript va in esecuzione.

Forniscimi altre informazioni su questi punti:
  • Come mai usi il setTimeout? Se lo scopo è quello di attendere che la pagina-genitore abbia completato il caricamento, allora prova con questo codice:
    var p = parent.window;
    p.onload = function(){p.document.getElementById('App').src = '/XXX/Login.aspx'};
  • Hai ispezionato il codice HTML prodotto dalla pagina-genitore per verificare che esista effettivamente un elemento con id="App"?


ciao,
Modificato da BrightSoul il 14 settembre 2011 01.06 -

Enjoy learning and just keep making
14 messaggi dal 21 agosto 2007
ciao BrightSoul,
grazie della risposta.

purtroppo grandi risposte non te ne posso dare sul perchè è stato adottato quel tipo di codice (settimeout).
la pagina che va in errore è stata prodotta da terze parti (società Belga)
A me era stato detto di creare una pagina con frame, di cui uno di nome "App", e di modificare il loro codice solo nelle chiamate alle mie pagine sviluppate in aspx (una di queste istruzioni è quella incriminata)

l'applicativo è nato circa 3 anni fa, ho cominciato a svilupparlo in VS 2005 poi migrato a VS 2008 senza problemi, fino a che usavo la mia vecchia macchina in Vista.

copiata la cartella con tutta la soluzione sul pc nuovo, su cui ho installato VS2008, ottengo questo messaggio.

l'ispezione del codice HTML riesco a farla del primo frame, che contiene il codice che deve far caricare il secondo, mentre del secondo (App) è ovviamente vuoto in quanto non finisce di popolare la pagina con la chiamata che genera l'errore. Non so come vedere il codice della pagina con frame (pagine-genitore).

questo il codice della pagina che genera i frames:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Titolo della Pagina</title>
</head>
<frameset rows="*,38" framespacing="0" border="0" frameborder="0">
  <frame name="App" src="about:blank" scrolling="auto" marginwidth="6" marginheight="6">
  <frame name="Piede" scrolling="no" noresize target="Piede" src="HostPage.html" marginwidth="12" marginheight="8">
  <noframes>
  <body>

  <p>La pagina corrente utilizza i frame. Questa caratteristica non è
  supportata dal browser in uso.</p>

  </body>
  </noframes>
</frameset>
</html>


grazie ancora
ciao
Gerardo
11.884 messaggi dal 09 febbraio 2002
Contributi
ciao,
vedo che il frame porta l'attributo name="App". Prova ad aggiungere anche id="App", così:

<frame name="App" id="App" src="about:blank" scrolling="auto" marginwidth="6" marginheight="6">

Enjoy learning and just keep making
14 messaggi dal 21 agosto 2007
ciao,
grazie a BrighSoul.
era proprio quello il problema.

l'unica cosa che mi lascia perplesso è che ha sempre funzionato e che il progetto è pubblicato così e non ha mai dato problemi.

farò tesoro.
grazie ancora
ciao
Gerardo
11.884 messaggi dal 09 febbraio 2002
Contributi
GerardoO ha scritto:
l'unica cosa che mi lascia perplesso è che ha sempre funzionato e che il progetto è pubblicato così e non ha mai dato problemi.


Effettivamente sì, era una situazione strana. Cercando più approfonditamente, però, è saltato fuori che .getElementById() andava a controllare sia l'attributo id che l'attributo name, almeno fino alla versione 7 di Internet Explorer.

Avendo acquistato un nuovo PC con Internet Explorer 8, hai incontrato il problema perché il nuovo comportamento di .getElementById è ora quello di controllare unicamente l'attributo id, di cui il tuo frame era sprovvisto.

Fonte: http://msdn.microsoft.com/en-us/library/ms536437%28v=vs.85%29.aspx

ciao,
Modificato da BrightSoul il 14 settembre 2011 20.41 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.