Идея: искать видео на YouTube, перетаскивая видео проигрыватель правой кнопкой (например, 1 секунда на каждые 2% ширины экрана).Так что на экране 1920x1080, если я нажму правую кнопку мыши, перетащу ее на 384 пикселя (20%) влево и затем отпущу, видео должно перемотаться на 10 секунд.
У меня есть скрипт GreaseMonkey, которыйделает в основном то, что я хочу, но контекстное меню все равно всплывает, когда я отпускаю кнопку.Это не контекстное меню по умолчанию, а пользовательское контекстное меню YouTube, которое предположительно где-то связано с событием mouseup.Я хочу избавиться от этого меню и запретить открытие контекстного меню по умолчанию.
Есть ли способ изменить действия по умолчанию для событий мыши?Я хочу сохранить все остальные действия (щелчок левой кнопкой мыши, действия клавиатуры и т. Д.).Я не нашел способ удалить обработчики событий для элемента для определенного события.
if (window.top === window.self) {
// YT video cannot be manipulated from the scope in which GM is running
// so we add a <script> element in the document to make it work
addJsNode(installListeners)
}
function installListeners() {
const FACTOR = screen.width / 70
const mp = document.getElementById('movie_player')
let startpos
mp.onmousedown = (e) => {
// only using FF so cross-browser compatibility is not required
if (e.button == 2) { startpos = e.clientX }
}
mp.onmouseup = (e) => {
if (e.button == 2) {
//===> somehow prevent YT from displaying context menu
const diff = e.clientX - startpos
mp.seekBy(diff / FACTOR)
}
}
}
function addJsNode(func) {
var scriptNode = document.createElement('script')
scriptNode.type = 'text/javascript'
scriptNode.textContent = '('+func.toString()+')()'
var target = document.getElementsByTagName ('head')[0] ||
document.body || document.documentElement
target.appendChild(scriptNode)
}