#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 работает).
Комментариев нет:
Отправить комментарий