Question

J'essaie donc d'invoquer des méthodes sur une page et je connais les valeurs que je veux mettre dans les méthodes, mais je n'arrive pas à faire en sorte que la syntaxe fonctionne. Je me sens si bien… lamérisé.

Ok, voici la méthode javascript sur la page

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;
}

Fonction très simple et vous supposeriez que les paramètres étaient des chaînes, non? Donc, dans la console IE8 Script Debugger, j’ai essayé ceci:

  

ReturnValue (& "; adf &"; & "; asdf &";);   //ÉCHOUER     " objet attendu "

Objet attendu hein, eh bien, j'ai peut-être besoin de guillemets simples pour les chaînes que j'ai assumées ensuite (juste au cas où).

  

ReturnValue ('adf', 'asdf'); //ÉCHOUER     " objet attendu "

D'accord, assurez-vous simplement .. J'ai donc besoin d'un objet qui stocke une chaîne. Que diriez-vous d'utiliser un var, je pensais ..

  

var o = & "adf &" ;; var p = & "; dfsa &" ;; ReturnValue (o, p); // ECHEC & "Objet attendu" & ";

J'ai essayé avec des guillemets simples pour être sûr. Donc, après tout cela, je suis sûr qu’un objet est nécessaire. J'ai donc essayé de créer un objet.

  

o = nouvel objet (); k = nouvel objet (); //{...}

À partir de maintenant, je ne savais pas comment ajouter une chaîne à un objet, alors je viens de le faire.

  

o.value = " text " ;; k.value = & champ " ;; // " text " ... " champ & ";

D'accord, maintenant je me sens excité d'avoir un objet avec une ficelle là-dedans alors maintenant j'essaie de le rassembler à nouveau.

  

Valeur de retour (o, z)     // EPIC FAIL & "Objet attendu" & ";

Je mets des objets dedans! Maintenant, je suis de retour à la case départ, quelqu'un peut-il aider?

Bon, le problème n'est toujours pas résolu.

Après une enquête plus approfondie, j’ai constaté que le script ne s’exécutait pas une fois au tout début du chargement de la page. Je peux déboguer et casser et tant qu'il est en pause dans le code, je peux exécuter les méthodes. Mais après la publication et la fin de la déclaration de toutes les variables, je ne peux exécuter aucune méthode. Mais, pour une raison quelconque, la même méthode que j'essaie d'exécuter peut s'exécuter à partir d'un Popup à l'aide de Window.Opener.ReturnValue (string, string);

Je ne comprends pas!

Gourou Javascript où êtes-vous quand j'ai besoin de vous!

Était-ce utile?

La solution

En supposant que vous définissiez szType ailleurs, j’ai collé cette fonction dans une page de travail et je l’ai joué avec. Je ne peux pas reproduire ce problème dans IE8 (ou FireFox 3).

En cherchant sur Google, la seule chose que j'ai trouvée est une référence disant que si vous définissez un type de script incorrect, vous risquez de l'obtenir, car IE n'analysera pas du tout le bloc de script. Votre bloc de script est-il défini comme & Quot; text / javascript & Quot;?

Si cela ne fonctionne pas, pouvez-vous fournir davantage de code (peut-être aussi le balisage)?

Sur une autre note, vous pouvez utiliser quelque chose comme jQuery ou l'une des autres bibliothèques JS. JS spécifique au navigateur comme celui-ci est diabolique (death to document.all).

Autres conseils

Peut-être que szType, l'un de oForm, oForm.agt etc. est null?

Quelle est la valeur de szType? Je ne peux pas le voir être réglé n'importe où, peut-être que c'est ce sur quoi il bombarde? En outre, ceux document.all et forme. ne fonctionnera probablement pas dans autre chose que IE. document.getElementById ('theid') est bien meilleur pour récupérer des éléments dom.

Aussi, pouvez-vous essayer de définir un point d'arrêt sur la fonction ReturnValue et de l'explorer? Je n'ai pas utilisé la console IE8 de cette façon, mais je sais que vous pouvez déboguer de cette façon.

modifier est-il capable d'exécuter des fonctions de cette manière? Peut-être commenter tout dans ReturnValue et s’assurer qu’il peut réellement exécuter la fonction elle-même. Vous devrez peut-être être en session de débogage ou appeler la fonction via window.ReturnValue

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top