JavaScript: вызов события click тега привязки из javascript - PullRequest
19 голосов
/ 11 июня 2009

У меня есть страница с тегом привязки. В моем 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 (ThickBox) по этой ссылке.

Пожалуйста, советуйте. Заранее спасибо.

Ответы [ 6 ]

68 голосов
/ 11 июня 2009

Если у вас установлен 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», как и ожидалось.

11 голосов
/ 11 июня 2009

Вы должны назвать событие клика следующим образом:

document.getElementById("proxyAnchor").click();
// $('#proxyAnchor').click();

но в вашем случае вы должны установить местоположение окна на страницу перенаправления, если вы этого хотите.

1 голос
/ 11 июня 2009

Для немедленного изменения страницы вы также можете сделать это:

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

1 голос
/ 11 июня 2009

Я верю, что вы ищете:

var proxyImgSrc="CostMetrics.aspx?Model=" + model +"&KeepThis=true&TB_iframe=true&height=410&width=650";
$("#proxyAnchor").attr('href', proxyImgSrc).trigger("click");;
1 голос
/ 11 июня 2009

Полагаю, вы хотите вызвать событие click. Не "onClick". Также не забудьте включить скобки (), когда вы вызываете метод. Не путайте методы (которые заканчиваются на (и)) с атрибутами и свойствами, которые не заканчиваются на (и).

// Using jQuery - Which you tagged...
$("#proxyAnchor").attr("href", proxyImgSrc).click();
0 голосов
/ 29 мая 2018

Если вы ищете поддержку 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);
            }
...