Как я программно нажимаю на элемент в JavaScript?

Глядя на эту иллюстрацию для MVVM ( источник ):

Вы можете видеть, что есть отдельные модели данных и бизнес-логики. Однако, используя BLoC , на самом деле нет такого различия. Классы, которые обрабатывают бизнес-логику, также обрабатывают данные, что также может применяться к MVVM .

Чтобы быть справедливым, на самом деле нет большой разницы. ключевая часть , которую нужно убрать, одинакова для обоих: Изоляция бизнес-логики от пользовательского интерфейса. Следовательно, реализация любого из двух будет выглядеть очень похоже, то есть с использованием Stream и StreamBuilder .
Кроме того, существуют пакеты, облегчающие работу с Stream, например, rxdart , это то, что команда Flutter использует, насколько мне известно.

59
задан wOxxOm 9 March 2017 в 17:06
поделиться

5 ответов

Для Firefox ссылки кажутся «специальными». Единственный способ получить эту работу - использовать описанный здесь метод createEvent для MDN и вызвать функцию initMouseEvent. Даже если это не сработало полностью, мне пришлось вручную указать браузеру открыть ссылку ...

var theEvent = document.createEvent("MouseEvent");
theEvent.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
var element = document.getElementById('link');
element.dispatchEvent(theEvent);

while (element)
{
    if (element.tagName == "A" && element.href != "")
    {
        if (element.target == "_blank") { window.open(element.href, element.target); }
        else { document.location = element.href; }
        element = null;
    }
    else
    {
        element = element.parentElement;
    }
}
30
ответ дан 24 November 2019 в 18:09
поделиться

Используя jQuery , вы можете сделать то же самое, например:

$("a").click();

, который «щелкнет» по всем якорям на странице.

22
ответ дан 24 November 2019 в 18:09
поделиться

element.click () - это стандартный метод, описанный в спецификации W3C DOM . Gecko / Firefox Mozilla следует стандарту и позволяет вызывать этот метод только для элементов INPUT.

10
ответ дан 24 November 2019 в 18:09
поделиться

Вы пытаетесь фактически перейти по ссылке или вызвать нажатие кнопки мыши? Вы можете вызвать щелчок мышью примерно так:

var link = document.getElementById(linkId);
link.onclick.call(link);
8
ответ дан 24 November 2019 в 18:09
поделиться

Вот кросс-браузерная рабочая функция (может использоваться также и для других обработчиков кликов):

function eventFire(el, etype){
    if (el.fireEvent) {
      el.fireEvent('on' + etype);
    } else {
      var evObj = document.createEvent('Events');
      evObj.initEvent(etype, true, false);
      el.dispatchEvent(evObj);
    }
}
7
ответ дан 24 November 2019 в 18:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: