Страницы

Поиск по вопросам

понедельник, 23 декабря 2019 г.

Имитация комбинации “Shift + Left Click"

#javascript #userjs


Использую user.js. Нужно эмулировать сочетание Shift + Left Click на элементе с id.
Пробовал window.open, но не подходит, т.к ссылки генерируются автоматически.

        function openClient() {
            window.open("динамические ссылки", "_blank", "toolbar=no, scrollbars=no,
resizable=no, top=50, left=50, width=450, height=615");
        }


Отлично работает:

var start = document.getElementById("startBtn").click();


Можно ли как-то изменить, чтобы клик происходил с зажатой клавишей shift сразу при
заходе на страницу, но без jQuery?
    


Ответы

Ответ 1



Можно создать объект события MouseEvent вручную, передав ему в конструктор кроме базовых параметров ещё и shiftKey: true: document.getElementById("button").addEventListener("click", function() { var event = new MouseEvent("click", { bubbles: true, cancelable: true, view: window, shiftKey: true }); document.getElementById("link").dispatchEvent(event); }); Link Для наглядности примера событие генерируется по клику на кнопку. Но при загрузке страницы, если заменить document.getElementById("button").addEventListener("click" на document.addEventListener("DOMContentLoaded", оно тоже работает. Проверено на работоспособность в Opera 49.0.2725.47 В IE 11.125.16299.0 new MouseEvent работать отказывается, но зато там работает deprecated метод initMouseEvent. Однако передачу true в качестве параметра shiftKey он благополучно игнорирует, открывая ссылку в том же окне: document.getElementById("button").addEventListener("click", function() { var event = document.createEvent("MouseEvent"); event.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, true, false, 0, null); document.getElementById("link").dispatchEvent(event); }); Link А чтобы было не слишком скучно, поведение в Firefox 57.0.2 отличается и от Opera, и от IE: в нём работают как new MouseEvent, так и initMouseEvent, однако при передаче true в shiftKey в обоих случаях вообще ничего не происходит (без shiftKey работает).

Комментариев нет:

Отправить комментарий