Domanda

Quindi sto cercando di invocare metodi su una pagina e conosco i valori che voglio inserire nei metodi, ma non riesco a far funzionare la sintassi. Mi sento così bene ... lamerizzato.

Ok, ecco il metodo javascript nella pagina

function ReturnValue (sValue, sText) 
{
     window.focus();
     var oForm = document.EditForm;

     switch (szType)        // Form element name
     {
     case 'agt':
        oForm.agt.value = sText;
        oForm.agentman.value = sValue;
        oForm.agtid.value = sValue;                              
        oForm.getagt.focus();
        break;

     case 'county':     
        oForm.County.value = sValue;
        sCurrentCounty = new String(sValue);
        document.all("CountyDisp").innerHTML = sText;
        document.all("City").value = "";
        document.all("CityDisp").innerHTML = "";
        document.all("Area").value = "";
        document.all("AreaDisp").innerHTML = "";
        break;
   default:
        break;      
     }  // End switch
 return;
}

Funzione molto semplice e supponeresti che i parametri fossero stringhe, giusto? Quindi nella console di debugger degli script IE8 ho provato questo:

  

ReturnValue (quot &; Adf quot &;, Quot &; & Asdf quot;);   //FALLIRE     " Oggetto previsto "

Oggetto previsto eh, beh forse ho bisogno di virgolette singole per le stringhe che ho assunto in seguito (per ogni evenienza).

  

ReturnValue ( 'adf', 'asdf'); //FALLIRE     " Oggetto previsto "

Okay, sto solo assicurando .. Quindi ho bisogno di un oggetto che memorizzi una stringa. Che ne dici di usare un var pensavo ..

  

var o = " adf " ;; var p = " dfsa " ;; ReturnValue (o, p); // FAIL & Quot; Oggetto previsto & Quot;

Ho provato con virgolette singole solo per essere sicuro. Quindi, dopo tutto ciò, sono sicuro che sia necessario un oggetto. Quindi ho provato a creare un oggetto.

  

o = new Object (); k = new Object (); //{...}

Ora da qui non sapevo come aggiungere una stringa a un oggetto, quindi l'ho fatto.

  

o.value = " text " ;; k.value = " campo " ;; // " text " ... " campo "

Okay, ora mi sento eccitato di avere un oggetto con qualche stringa lì dentro, quindi ora provo a rimettere tutto insieme.

  

ReturnValue (o, z)     // EPIC FAIL & Quot; Oggetto previsto & Quot;

Sto inserendo degli oggetti! Ora sono tornato al punto di partenza, qualcuno può aiutare?

Il problema non è ancora stato risolto.

Dopo ulteriori accertamenti ho scoperto che lo script viene eseguito una volta all'inizio del caricamento della pagina. Posso eseguire il debug e rompere e mentre è in pausa attraverso il codice posso eseguire i metodi. Ma dopo che ho rilasciato e termina di dichiarare tutte le variabili, non posso eseguire alcun metodo. Ma, per qualche motivo, lo stesso metodo che sto cercando di eseguire è in grado di eseguire da un popup utilizzando Window.Opener.ReturnValue (stringa, stringa);

Non capisco!

Il guru di Javascript è dove sei quando ho bisogno di te!

È stato utile?

Soluzione

Supponendo che tu abbia definito szType da qualche altra parte, ho incollato questa funzione in una pagina scratch e ho giocato con essa e non riesco a riprodurre questo problema in IE8 (o FireFox 3).

Cercando su Google, l'unica cosa che ho trovato è stato un riferimento che dice che se si imposta il tipo di script in modo errato si potrebbe ottenere questo dato che IE non analizzerà affatto il blocco di script. Il blocco di script è impostato come & Quot; text / javascript & Quot ;?

Se il problema persiste, puoi fornire più codice (forse anche il markup)?

In un'altra nota, potresti voler utilizzare qualcosa come jQuery o una delle altre librerie JS. JS specifico per browser come questo è malvagio (death to document.all).

Altri suggerimenti

Forse szType, uno di oForm, oForm.agt ecc. è nullo?

Qual è il valore di szType? Non riesco a vederlo impostato da nessuna parte, forse è quello che sta bombardando? Inoltre, quelli document.all e form. probabilmente non funzionerà in niente diverso da IE. document.getElementById ('theid') è molto meglio per il recupero di elementi dom.

Inoltre, puoi provare a impostare un breakpoint sulla funzione ReturnValue e passarci attraverso? Non ho usato la console IE8 in questo modo, ma so che puoi eseguire il debug in quel modo.

modifica È in grado di eseguire funzioni in quel modo? Forse commenta tutto in ReturnValue e assicurati che possa effettivamente eseguire la funzione stessa. Potrebbe essere necessario essere in una sessione di debug o richiamare la funzione tramite window.ReturnValue

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top