JavaScript: вызов события клика тега привязки из javascript

У меня есть страница с тегом привязки. В моем JavaScript я устанавливаю атрибут HREF тега привязки динамически на основе некоторых условий if-else. Теперь я хочу программно вызвать событие щелчка тега привязки. Я использовал приведенный ниже код, но безуспешно.

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 (толстый ящик) по этой ссылке.

Добрый совет. Заранее спасибо.


person Shyju    schedule 11.06.2009    source источник
comment
Могу ли я указать путь, по которому файл должен быть загружен? потому что при использовании он просто загружается в папку DOWNLOADS. я хочу сохранить в расположение html файла.   -  person Arjun Chiddarwar    schedule 13.12.2016


Ответы (6)


Если у вас установлен jQuery, почему бы просто не сделать это:

$('#proxyAnchor')[0].click();

Обратите внимание, что мы используем [0], чтобы указать первый элемент. Селектор jQuery возвращает экземпляр jQuery, и вызов click () для него вызывает только обработчик javascript click, а не href. Вызов click () для фактического элемента (возвращенного [0]) приведет к переходу по ссылке в href и т. Д.

См. Здесь пример, иллюстрирующий разницу: http://jsfiddle.net/8hyU9/

Что касается того, почему ваш исходный код не работает - это, вероятно, потому, что вы вызываете onclick, а не onclick(). Без круглых скобок JavaScript будет возвращать все, что присвоено свойству onclick, а не пытаться его выполнить.

Чтобы понять, что я имею в виду, попробуйте следующий простой пример:

var f = function() { return "Hello"; };     
alert(f);
alert(f());

Первый отобразит фактический текст функции, а второй отобразит слово «Hello», как и ожидалось.

person samjudson    schedule 11.06.2009
comment
Для случая использования следования href, определенного в привязке, этот ответ не выполняется - person Roatin Marth; 26.06.2012
comment
@RoatinMarth На самом деле, это работает. Частично проблема в том, что вы используете JSFiddle (щелчок по самой ссылке не работает в JSFiddle). Для идеального примера работы в JSFiddle попробуйте установить для цели _blank. Кроме того, вы не сделали [0]. Я тестировал его без цели на моем собственном сервере, и он работал нормально. Итак, вот фиксированная версия для JSFiddle: jsfiddle.net/SNdHW/4/show - person TheOneWhoSighs; 01.12.2015
comment
Могу ли я указать путь, по которому файл должен быть загружен? потому что при использовании он просто загружается в папку DOWNLOADS. я хочу сохранить в расположение html файла. - person Arjun Chiddarwar; 13.12.2016
comment
@TheOneWhoSighs проверяет временные метки правок этого ответа. Мой комментарий был ответом на исходный ответ (чистое решение jQuery). - person Roatin Marth; 05.06.2021

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

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

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

person Canavar    schedule 11.06.2009
comment
Могу ли я указать путь, по которому файл должен быть загружен? потому что при использовании он просто загружается в папку DOWNLOADS. я хочу сохранить в расположение html файла. - person Arjun Chiddarwar; 13.12.2016

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

// Using jQuery - Which you tagged...
$("#proxyAnchor").attr("href", proxyImgSrc).click();
person Sampson    schedule 11.06.2009

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

var proxyImgSrc= "CostMetrics.aspx?Model=" + model + "&KeepThis=true&TB_iframe=true&height=410&width=650";
window.location = proxyImgSrc;

Вот пример из школ W3: http://www.w3schools.com/js/tryit.asp?filename=tryjs_location

person Darren Torpey    schedule 11.06.2009

Я считаю, что это то, что вам нужно:

var proxyImgSrc="CostMetrics.aspx?Model=" + model +"&KeepThis=true&TB_iframe=true&height=410&width=650";
$("#proxyAnchor").attr('href', proxyImgSrc).trigger("click");;
person karim79    schedule 11.06.2009

Если вам нужна поддержка 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);
            }
person Md. Tazbir Ur Rahman Bhuiyan    schedule 29.05.2018