2010-11-09 5 views
0

Je veux cliquer sur un lien, tirer le src du lien, et utiliser ce src pour actualiser un iframe dans ma page. Je pourrais le faire rapidement dans OG Javascript ou jQuery, mais j'ai besoin d'utiliser DOJO.Comment changer le src et recharger un iframe avec DOJO?

Merci

MISE À JOUR: Après avoir intégré Strife25 répondre à mon code est:

dojo.ready(function() { 
    dojo.query(".audiolink").forEach(function(link){ 
     dojo.connect(link, "onclick", null, function(e){ 
     var node = e.target; 
     var url  = dojo.attr(node, "href"); 
     dojo.query("#audioiframe").attr("src", url); 
     dojo.stopEvent(e); 
     }); 
    }); 
}); 

L'événement est attaché aux liens, l'attribut iframe src est mis à jour, mais l'événement onclick est pas annulé et la page se comporte comme si le lien était cliqué. Il semble que dojo.stopEvent(e); ne fonctionne pas (en demandant où télécharger le fichier MP3). En outre, iframe ne recharge pas mais je crois que c'est dû au fait que le clic n'est pas annulé.

MISE À JOUR: Je suis le bug, pas le code! Je faisais un lien vers le MP3 par rapport à la page qui abritait le MP3 (longue histoire). Ça marche. Je vous remercie.

+0

Qu'est-ce que OG Javascript? Jamais entendu parler. Pourquoi exactement el.src = url n'est pas suffisant? Est-ce trop simple? Vous avez besoin d'un algorithme de temps exponentiel pour faire cette tâche? Vous ajoutez deux nombres avec 'dojo.add' car' + 'n'est pas assez sophistiqué? – galambalazs

+0

@galambalazs Je ne défends pas la mise en œuvre de DOJO, franchement j'ai vu de meilleures bibliothèques. Mais je pose une question honnête pendant que je travaille pour apprendre la bibliothèque pour des raisons non liées à mes préférences personnelles. Donc, une réponse à la question est très importante. Quant à l'OG, cela signifie Original Gangster, qui est une façon amusante de dire, vrai javascript, le genre que j'aime. –

Répondre

2

Vous associez l'événement click dans le mauvais sens, vous devez utiliser dojo.connect pour attacher les gestionnaires d'événements. En outre, dojo.query() renvoie une NodeList lorsqu'elle s'exécute à la place d'un seul noeud.

La bonne façon d'utiliser dojo dans ce cas serait:

dojo.query(".link").forEach(function(link){ 
    dojo.connect(link, "onclick", null, function(e){ 
     //do your stuff 
    }); 
}); 

Si vous avez un seul bouton qui exécute l'événement onclick que vous proposez, vous devez utiliser à la place dojo.byId comme ceci:

var link = dojo.byId("linkId"); //retrieves a reference to a DOM node with the given id 
dojo.connect(link, "onclick", null, function(e){ 
    //do you stuff 
}); 

Voici la page doc de dojo.connect, ce qui explique également comment vous pouvez nettoyer les gestionnaires d'événements sur la destruction d'objets/Page unload: http://www.dojotoolkit.org/reference-guide/dojo/connect.html

+0

J'ai mis à jour la question, il semble que l'onclick ne retourne pas faux, voir ci-dessus. –

Questions connexes