Travailler avec les “” Paramètres JavaScript
Je suis en train de travailler avec un contrôle ActiveX dans Internet Explorer 8, c'est pour afficher un dialogue enregistrer le fichier qui laisse l'utilisateur choisir un nom de fichier et le type de fichier (jpg, gif, etc). Ces valeurs se passait à code et qui sont ensuite utilisées dans une méthode différente pour enregistrer le fichier. Malheureusement, la méthode qui appelle la boîte de dialogue n'a pas de valeur de retour, et le nom de fichier et le type du fichier sont transmis en tant que hors paramètres.
La signature de la méthode (en Visual Basic) ressemble à ceci:
Public Sub SaveFileDialog( _
ByVal bstrDialogType As Variant, _
ByRef pbstrFileName As String, _
ByRef out_pvType As Long _
)
Les deux ByRef paramètres sont les hors paramètres.
J'ai écrit le code JavaScript suivant:
try
{
var saveFileName, saveFileType; //out variables
gxVideoPlayBack.SaveFileDialog("image", saveFileName, saveFileType);
alert(saveFileName); //displays "undefined"
alert(saveFileType); //displays "undefined"
}
catch(error)
{
if(!error.number === -2147221484) //User clicked cancel.
{
alert(error.message);
}
}
Le code fonctionne dans le contrôle ActiveX produit son dialogue, et je peux gérer les conditions d'erreur, mais je n'arrive pas à comprendre comment capturer les valeurs de la hors paramètres.
Dans le code gxVideoPlayBack est une référence pour le contrôle ActiveX incorporé dans les DOM par l'intermédiaire d'un élément HTML.
Si le JavaScript ne fonctionne pas pour ce, peut-il être fait en VBScript?
Comme une alternative, je peux juste mettre en œuvre ma propre boîte de dialogue, mais plutôt utiliser celui fourni.
OriginalL'auteur RunnerRick | 2011-02-25
Vous devez vous connecter pour publier un commentaire.
Edit: Il semble qu'il n'est pas possible d'avoir "sorti" paramètres JavaScript/JScript.
Original:
Peut-être le l'approche décrite dans cet article:
Je suppose que l'idée est que le WSH wrapper pour ce natif d'appel va tenter d'attribuer la propriété "valeur" de la donnée des paramètres de sortie, de sorte que vous pouvez remplacer la valeur de poseur ou tout simplement lui donner un objet avec une valeur setter.
oui, même ici, il suffit de jeter une idée. Je pense que la réalité est que les "" paramètres ne sont pas disponibles en JScript/JavaScript.
Concept intéressant. Malheureusement, lorsque j'initialise deux variables à un objet vide le SaveFileDialog jette un type d'exception. Il attend une chaîne de caractères et un entier.
Ma conclusion est qu'il n'est pas possible de tirer "de" paramètres dans un ActiveX méthode à partir de JavaScript, mais c'est la meilleure réponse.
OriginalL'auteur maerics
Tous les arguments d'une fonction en JavaScript sont passé value (même si le valeur passée un référence à un objet (ce qui est)). Il n'est pas passé par référence.
Si
SaveFileDialog
modifie les objets référencés parsaveFileName
etsaveFileType
vous avez accès à ces changements par le biais de vos variables existantes.OriginalL'auteur Wayne Burkett
Malheureusement, out/ByRef paramètres ne fonctionnent que dans JScript pour les objets; pas pour tout autre type (nombres, chaînes de caractères).
Dans ce cas, vous devrez utiliser VBScript, qui prend en charge ByRef arguments, ou comme dit maerics, écrire un VB/VBScript wrapper pour le SaveFileDialog méthode, qui pourrait revenir à un objet contenant à la fois le nom de fichier et le type.
OriginalL'auteur Martijn