JavaScript: вызов click-события тега привязки из javascript
У меня есть страница с привязным тегом. В моем JavaScript я устанавливаю атрибут HREF
тега привязки динамически на основе некоторых условий if-else. Теперь я хочу программным образом вызывать событие click тега привязки. Я использовал приведенный ниже код, но не был успешным.
var proxyImgSrc="CostMetrics.aspx?Model=" + model +"&KeepThis=true&TB_iframe=true&height=410&width=650";
document.getElementById("proxyAnchor").href=proxyImgSrc;
document.getElementById("proxyAnchor").onclick;
Может ли кто-нибудь сказать мне, как идти дальше? У меня есть реализация jQuery light box (thickbox) по этой ссылке.
Просьба посоветуйте. Спасибо заранее.
Ответы
Ответ 1
Если у вас установлена jQuery, почему бы просто не сделать это:
$('#proxyAnchor')[0].click();
Обратите внимание, что мы используем [0] для указания первого элемента. Селектор jQuery возвращает экземпляр jQuery и вызывает click(), который вызывает только обработчик javascript, а не href. Вызов click() на фактическом элементе (возвращается [0]) будет следовать за ссылкой в href и т.д.
См. здесь пример, иллюстрирующий разницу: http://jsfiddle.net/8hyU9/
Что касается того, почему ваш исходный код не работает - возможно, это потому, что вы вызываете onclick
, а не onclick()
. Без скобки JavaScript вернет все, что присваивается свойству onclick
, а не пытается выполнить его.
Попробуйте следующий простой пример, чтобы понять, что я имею в виду:
var f = function() { return "Hello"; };
alert(f);
alert(f());
Первый отобразит фактический текст функции, а второй отобразит слово "Hello", как ожидалось.
Ответ 2
Вы должны вызвать событие click следующим образом:
document.getElementById("proxyAnchor").click();
// $('#proxyAnchor').click();
но в вашем случае вы должны установить расположение окна на страницу переадресации, если вы этого хотите.
Ответ 3
Я считаю, что вы хотите вызвать событие click
. Не "onClick". Кроме того, не забудьте включить скобку(), когда вы вызываете метод. Не путайте методы (которые заканчиваются с (и)) атрибутами и свойствами, которые не заканчиваются (и).
// Using jQuery - Which you tagged...
$("#proxyAnchor").attr("href", proxyImgSrc).click();
Ответ 4
Я считаю, что это то, что вам нужно:
var proxyImgSrc="CostMetrics.aspx?Model=" + model +"&KeepThis=true&TB_iframe=true&height=410&width=650";
$("#proxyAnchor").attr('href', proxyImgSrc).trigger("click");;
Ответ 5
Для немедленного изменения страницы вы также можете сделать это:
var proxyImgSrc= "CostMetrics.aspx?Model=" + model + "&KeepThis=true&TB_iframe=true&height=410&width=650";
window.location = proxyImgSrc;
Вот пример из W3 Schools:
http://www.w3schools.com/js/tryit.asp?filename=tryjs_location
Ответ 6
Если вы ищете поддержку IE, то приведенный ниже пример может помочь:
предположим, что у вас есть документ blob в объекте ответа:
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);
}