J'ai une page avec une balise d'ancrage. Dans mon JavaScript, je définis l'attribut HREF
de la balise d'ancrage de manière dynamique en fonction de certaines conditions if-else Maintenant, je veux appeler l'événement click de la balise d'ancrage par programme. J'ai utilisé le code ci-dessous, mais n'a pas réussi.
var proxyImgSrc="CostMetrics.aspx?Model=" + model +"&KeepThis=true&TB_iframe=true&height=410&width=650";
document.getElementById("proxyAnchor").href=proxyImgSrc;
document.getElementById("proxyAnchor").onclick;
Quelqu'un peut-il me dire comment aller de l'avant? J'ai une implémentation de boîte à lumière jQuery (thickbox) sur ce lien.
Veuillez aviser. Merci d'avance.
Si vous avez jQuery installé, pourquoi ne pas simplement faire ceci:
$('#proxyAnchor')[0].click();
Notez que nous utilisons [0] pour spécifier le premier élément. Le sélecteur jQuery renvoie une instance de jQuery et l'appel de click () sur cet appel uniquement appelle le gestionnaire javascript, pas le href. L'appel de click () sur l'élément réel (retourné par [0]) suivra le lien dans un href, etc.
Voir ici pour un exemple illustrant la différence: http://jsfiddle.net/8hyU9/
Pourquoi votre code original ne fonctionne-t-il pas? C'est probablement parce que vous appelez onclick
et non onclick()
. Sans la parenthèse, JavaScript renverra tout ce qui est affecté à la propriété onclick
et ne tente pas de l'exécuter.
Essayez l'exemple simple suivant pour voir ce que je veux dire:
var f = function() { return "Hello"; };
alert(f);
alert(f());
Le premier affichera le texte actuel de la fonction, tandis que le second affichera le mot "Bonjour" comme prévu.
Vous devriez appeler click event comme ceci:
document.getElementById("proxyAnchor").click();
// $('#proxyAnchor').click();
mais dans votre cas, vous devez définir l'emplacement de la fenêtre sur une page de redirection, si vous le souhaitez.
Je crois que c'est ce que vous recherchez:
var proxyImgSrc="CostMetrics.aspx?Model=" + model +"&KeepThis=true&TB_iframe=true&height=410&width=650";
$("#proxyAnchor").attr('href', proxyImgSrc).trigger("click");;
Pour un changement de page immédiat, vous pouvez aussi faire ceci:
var proxyImgSrc= "CostMetrics.aspx?Model=" + model + "&KeepThis=true&TB_iframe=true&height=410&width=650";
window.location = proxyImgSrc;
Voici un exemple tiré de W3 Schools: http://www.w3schools.com/js/tryit.asp?filename=tryjs_location
Je pense que vous souhaitez invoquer l’événement click
. Pas le "onClick". Veillez également à inclure la parenthèse () lorsque vous appelez une méthode. Ne confondez pas les méthodes (qui se terminent par (et)) avec des attributs et des propriétés qui ne se terminent pas par (et).
// Using jQuery - Which you tagged...
$("#proxyAnchor").attr("href", proxyImgSrc).click();
Si vous recherchez une prise en charge d'IE, cet exemple ci-dessous peut vous aider:
supposons que vous ayez le document blob dans l'objet réponse:
var blob = new Blob([response.responseText], { type: headers['content-type'] });
if (navigator.msSaveOrOpenBlob) {
//Launches the associated application for a File or Blob saving for non webkit based browser such as safari or IE
navigator.msSaveOrOpenBlob(blob, "cvSummary.xml");
}
else {
//code for webkit based browser
var link = document.createElement('a');
document.body.appendChild(link);
link.style = "display: none";
var url = window.URL.createObjectURL(blob);
link.href = window.URL.createObjectURL(blob);
link.download = "cvSummary.xml";
link.dataset.downloadurl = ["text/xml", link.download, link.href].join(':');
link.click();
window.URL.revokeObjectURL(url);
}