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