Как исправить симуляцию кликов в Javascript - PullRequest
1 голос
/ 03 июня 2019

Я пытаюсь смоделировать щелчок на HTML-странице, которая у меня есть, но она работает только после того, как я щелкну элемент Inspect с помощью консоли Chrome

Когда я запускаю команду в консоли, я получаю вот это

$('#toolbar-preview').click();
n.fn.init {context: document, selector: "#toolbar-preview"}

Если я нажимаю кнопку «Проверить элемент», поведение меняется на

$('#toolbar-preview').click();
me.fn.init [a#toolbar-preview.link.icon-only]

и с тех пор кнопки нажимаются правильно.

Я вообще не эксперт по javascript, поэтому я не знаю, в чем проблема, возможно, это проблема инициализации кнопки?

EDIT Я не знаю, правильно ли я анализирую, я думаю, что то, что вызывается, это вот что, полученное из функции анализа:

var g = function(e, t) {
        return t = null == t ? e.length - 1 : +t,
        function() {
            for (var i = Math.max(arguments.length - t, 0), a = Array(i), n = 0; n < i; n++)
                a[n] = arguments[n + t];
            switch (t) {
            case 0:
                return e.call(this, a);
            case 1:
                return e.call(this, arguments[0], a);
            case 2:
                return e.call(this, arguments[0], arguments[1], a)
            }
            var o = Array(t + 1);
            for (n = 0; n < t; n++)
                o[n] = arguments[n];
            return o[t] = a,
            e.apply(this, o)
        }
    }

и

on: function(e, i, a, n) {
                function o(e) {
                    var n = e.target;
                    if (t(n).is(i))
                        a.call(n, e);
                    else
                        for (var o = t(n).parents(), r = 0; r < o.length; r++)
                            t(o[r]).is(i) && a.call(o[r], e)
                }
                var r, s, l = e.split(" ");
                for (r = 0; r < this.length; r++)
                    if ("function" == typeof i || !1 === i)
                        for ("function" == typeof i && (a = arguments[1],
                        n = arguments[2] || !1),
                        s = 0; s < l.length; s++)
                            this[r].addEventListener(l[s], a, n);
                    else
                        for (s = 0; s < l.length; s++)
                            this[r].dom7LiveListeners || (this[r].dom7LiveListeners = []),
                            this[r].dom7LiveListeners.push({
                                listener: a,
                                liveListener: o
                            }),
                            this[r].addEventListener(l[s], o, n);
                return this
            }

Я нашел следующие строки отсюда enter image description here

EDIT2: Что я смог понять для своей проблемы, так это то, что она вызвана отсутствием доступа к фрейму страницы. Когда я проверяю элемент, открывается iframe, а затем я могу использовать запросы и тому подобное для запуска таких команд, как click. Есть ли способ правильно получить доступ к элементу внутри iframe с помощью js? Я попробовал пару вещей, но безрезультатно:

frameRef.contentWindow //I have no function to search for elements like "getElementById('')"
frameRef.contentWindow.document//this is null
frameRef.contentDocument//this is null

1 Ответ

1 голос
/ 03 июня 2019

Попробуйте с:

$( document ).ready(function() {
    $('#toolbar-preview').click();
  });
...