ma3ca
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
Если я выделил текст, а потом кликнул для сброса выделения, браузер может отличить, кликнуто внутри выделения или вне его?
Можно попробовать проверить координаты выделения.
var rng = document.commandDispatcher.focusedWindow.getSelection().getRangeAt(0); var rc = rng.getBoundingClientRect(); alert(rc.left + "x" + rc.top + "\n" + rc.width + "x" + rc.height);
https://developer.mozilla.org/en-US/doc … ClientRect
https://developer.mozilla.org/en-US/doc … lientRects
Добавлено 11-03-2014 19:58:44
Только еще надо будет пересчитать в экранные координаты, примерно так:
https://github.com/Infocatcher/Custom_B … or.js#L630
Отредактировано Infocatcher (11-03-2014 19:58:44)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Как приделать к кнопке мышиный rocker жест, т. е. при зажатой ЛКМ делаем клик ПКМ?
И вопрос, как можно обратиться к анонимному элементу с anonid, кроме как через его неанонимного родителя?
Потому что истинного родителя бывает нелегко определить.
Отсутствует
Как приделать к кнопке мышиный rocker жест, т. е. при зажатой ЛКМ делаем клик ПКМ?
function handleMouseDown(e) { var contextMenu = document.getElementById("custombuttons-contextpopup"); if ( e.button == 0 ) { self.leftButtonDown = true; function c(e) { delete self.leftButtonDown; removeEventListener(e.type, c); setTimeout(function() contextMenu.hidden = false, 500); }; addEventListener("mouseup", c); } if ( e.button == 2 && self.leftButtonDown ) { contextMenu.hidden = true; custombuttons.alertSlide("alert", ""); } }; addEventListener("mousedown", handleMouseDown, true, self );
Отредактировано bunda1 (15-03-2014 15:22:46)
Отсутствует
Soeflaxs пишетГоспода, в упор не могу понять как писать код кнопки, но нужно простейшее - закрытие текущей вкладки при нажатии на саму кнопку. Может кто помочь?
делаем раз Готовые кнопки для Custom Buttons
читаем внимательно заглавный пост,
в самом низу делаем custom buttons documentation 2
читаем оглавление видим там Remove Tabs.. и жмем 3
Премного благодарен.
Отсутствует
Подскажите, что нужно прописать в код кнопки, чтобы она скрылась с панели?
Наверно
Не?
Отсутствует
Подскажите, что нужно прописать в код кнопки, чтобы она скрылась с панели?
Отсутствует
Да если this то тоже скрывается, но если в кнопке будет другой код то this может изменится и не будет отдавать ссылку на кнопку тогда код не сработает. this в кнопке может меняется а self нет, если конечно его специально не менять.
Отсутствует
bunda1,Чайник
Спасибо!
А вот такую задачку можно решить?
Некоторые видео в YouTube имеют ограничение на просмотр, т.е. пока не авторизуешься, то фиг его просмотришь. Но есть лазейка!
Обычно URL видео выглядит так: youtube.com/watch?v=6LZM3_wp2ps
Если же изменить URL на: youtube.com/v/6LZM3_wp2ps, то можно получить прямой доступ к файлу видео без проверки возраста и других параметров.
Требуется: при нажатии СКМ по голубой кнопке "Выполните вход, чтобы подтвердить свой возраст" изменить url, как описано выше, и открыть его в текущей вкладке.
Если СКМ по этой кнопке невозможно отследить, то пусть будет СКМ по всему серому прямоугольнику плеера.
Отсутствует
Inko7
для себя держу такую кнопку
custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EYoutube%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABYklEQVQ4jcXTzUoCURjG8XdTnnN0Zs7Yh4JIVyAEXUm0DVp0AW26gILAFiWJFJrYwo9FErQxAoMsjJxoNhUDQbgecSPjJgYGnhaVTCO1aOMLv9Xz375EE797It7RwzUjKkxDF64RDeMvHT38/NnyMhERtXWevtPD+I+2ztPUksK80QX8bmMSdq2Ch6UUgptfSwqTmlL0r3QBv+uFOFzXxftggKf1NQT3b00p+tTQuHchBX5IxuE4DhzHwXA4xFupiMt4FMGuoXGPzqXAmGQMtm2P9Ho9vBznxzspQHWNI+g0MY9utztitlrILKbGurrGQVWVeVWNw6+SmINlWbAsC2f7e9iYlcirDMGuqjKPSgrvn6gcfqXYDB4NA7sry9gUIRQD+6hTeJ8KKjcLKoffkcqxyqawHWEIbgEm5RSWPlQZ/iOnsDRliHhWYeWswswv+M2BEnoddRG2s0U0PdE/JCKiD2TAbGlHU6nxAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20icon%20%3D%20document.getAnonymousElementByAttribute%28%20this%2C%20%27class%27%2C%20%27toolbarbutton-icon%27%29%3B%0Aicon.style.width%20%3D%20%2716px%27%2C%20icon.style.height%20%3D%20%2716px%27%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B//%20%u0441%u043E%u0437%u0434%u0430%u0451%u043C%20%u043D%u0430%u0447%u0430%u043B%u044C%u043D%u0443%u044E%20%u0447%u0430%u0441%u0442%u044C%20%u0443%u0440%u043B%0Avar%20url1%3D%22https%3A//www.youtube.com/v/%22%3B%0A//%20%u043F%u043E%u043B%u0443%u0447%u0430%u0435%u043C%20%u0443%u0440%u043B%20%u0438%u0437%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0438%0Avar%20url%20%3D%20window._content.document.location.href%3B%0A//%20%u0443%u043A%u0430%u0437%u044B%u0432%u0430%u0435%u043C%20%u0440%u0430%u0437%u0434%u0435%u043B%u0438%u0442%u0435%u043B%u044C%0Avar%20chkpoint%3D%22%26%22%3B%0A/*%20%u043E%u0431%u0440%u0435%u0437%u0430%u0435%u043C%20%u0443%u0440%u043B%20%u043F%u043E%u043B%u0443%u0447%u0435%u043D%u043D%u044B%u0439%20%u0438%u0437%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0438%20%u043F%u043E%20%u043F%u0440%u0438%u043D%u0446%u0438%u043F%u0443%2032%20%u0441%u0438%u043C%u0432%u043E%u043B%u0430%20%u0441%u043D%u0430%u0447%u0430%u043B%u0430%20%28http%3A//www.youtube.com/watch%3Fv%3D%29%0A%u0438%20%u043F%u043E%u0441%u043B%u0435%2085%u0433%u043E%20%u0441%u0438%u043C%u0432%u043E%u043B%u0430%20%28%u044D%u0442%u043E%20%u044F%20%u0441%u0434%u0435%u043B%u0430%u043B%20%u0441%20%u0437%u0430%u043F%u0430%u0441%u043E%u043C%20%u0435%u0441%u043B%u0438%20%u0434%u043B%u0438%u043D%u0430%20%u043A%u043E%u0434%u0430%20%u0440%u043E%u043B%u0438%u043A%u0430%20%u0440%u0430%u0437%u043D%u0430%u044F%29*/%0Avar%20url%3Durl.slice%2832%2C85%29%3B%0A//%20%u0440%u0435%u0436%u0435%u043C%20%u0442%u043E%20%u0447%u0442%u043E%20%u043E%u0441%u0442%u0430%u043B%u043E%u0441%u044C%20%u043E%u0442%20%u0443%u0440%u043B%20%u043F%u043E%20%u0443%u043A%u0430%u0437%u0430%u043D%u043D%u043E%u043C%u0443%20%u0440%u0430%u0437%u0434%u0435%u043B%u0438%u0442%u0435%u043B%u044E%20%u0438%20%u0437%u0430%u043F%u0438%u0445%u0438%u0432%u0430%u0435%u043C%20%u0432%20%u043C%u0430%u0441%u0441%u0438%u0432%20%u044D%u0442%u043E%20%u0447%u0442%u043E%u0431%20%u043E%u0442%u0440%u0435%u0437%u0430%u0442%u044C%20%u0432%u0441%u0451%20%u043B%u0438%u0448%u043D%u0435%u0435%20%u043F%u043E%u0441%u043B%u0435%20%u043A%u043E%u0434%u0430%20%u0440%u043E%u0434%u0438%u043A%u0430%0Avar%20arrayOfStrings%20%3D%20url.split%28chkpoint%29%3B%0A//%u043F%u0440%u0438%u0441%u0432%u0430%u0438%u0432%u0430%u0435%u0442%20%u043A%u043E%u043D%u0435%u0447%u043D%u043E%u0439%20%u0447%u0430%u0441%u0442%u0438%20%u0443%u0440%u043B%20%u0441%u0430%u043C%u044B%u0439%20%u043F%u0435%u0440%u0432%u044B%u0439%20%u044D%u043B%u0435%u043C%u0435%u043D%u0442%20%u043C%u0430%u0441%u0441%u0438%u0432%u0430%20%u043A%u043E%u0442%u043E%u0440%u044B%u043C%20%u0438%20%u0431%u0443%u0434%u0435%u0442%20%u043A%u043E%u0434%20%u0440%u043E%u043B%u0438%u043A%u0430%20%0Avar%20url2%3DarrayOfStrings%5B0%5D%3B%0A//%20%u0437%u0430%u0433%u0440%u0443%u0436%u0430%u0435%u043C%20%u0432%20%u0442%u0435%u043A%u0443%u0449%u0443%u044E%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u0437%20%u043D%u0430%u0447%u0430%u043B%u044C%u043D%u043E%u0433%u043E%20%u0438%20%u043A%u043E%u043D%u0435%u0447%u043D%u043E%u0433%u043E%20%u0443%u0440%u043B%20%0AloadURI%28url1+url2%29%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%u041D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%u043E%u0442%u043E%u0431%u0440%u0430%u0436%u0430%u0435%u0442%u0441%u044F%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u043F%u043B%u0435%u0435%u0440%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
Отсутствует
>ORG@niZM<
Класс!!!
Но все же хотелось бы обработчик на нажатие СКМ приделать. Кнопка это хорошо, но хотелось бы от нее с панели избавиться. Хоткеями я не пользуюсь.
Добавлено:
попробовал через обработчик, как-то неудобно жмется
повесил на ALT+F5, вроде пока нормально
остался вопрос: как отключить этот хоткей или не выполнять код, если я не на странице youtube ?
Добавлено #2:
сделал так
var urlgrab = content.location.href.substring(12,23); if (urlgrab !== 'youtube.com') return;
или можно как-то проще по другому?
Отредактировано Inko7 (21-03-2014 13:28:26)
Отсутствует
Inko7
Я слепил код, положить его в инициализацию любой кнопки.
Срабатывает только на youtube.com, если кликнуть СКМ в любом месте по прямоугольнику плеера.
addEventListener("TabAttrModified", function() { var div = content.document.getElementById('player-unavailable'); var new_url = content.location.href.replace('watch?v=', 'v/'); if ( content.location.host !== 'www.youtube.com' || !div ) return; div.addEventListener('mousedown', function func(e){ if ( e.button == 1)loadURI(new_url) }) }, true, gBrowser.tabContainer )
Отсутствует
Но все же хотелось бы обработчик на нажатие СКМ приделать.
или можно как-то проще по другому?
addEventListener("mousedown", function(e) { if ( e.button !== 1 || content.location.host !== 'www.youtube.com' || !content.document.querySelector("#player-unavailable:hover") ) return; loadURI( content.location.href.replace('watch?v=', 'v/') ); }, false, gBrowser );
Отредактировано bunda1 (21-03-2014 21:36:07)
Отсутствует
Как эмулировать клик в нужных координатах?
Я пробовал
var utils = content.QueryInterface(Components.interfaces.nsIInterfaceRequestor). getInterface(Components.interfaces.nsIDOMWindowUtils); utils.sendMouseEvent("mouseup", х, у, 0, 1, 0); utils.sendMouseEvent("mousedown", х, у, 0, 1, 0);
Вместо х, у подставлял координаты ссылки. Листнер поставленный на ссылке не реагирует, event.target-ом оказывается родитель родителя ссылки.
О перехвате событий я знаю, ну а как мне сделать, чтобы ссылка реагировала на клик?
Отсутствует
В том и дело, что нужен клик по определённым координатам.
Со ссылкой я просто проверял как работает эмуляция клика.
тут невозможно обратиться к нужному элементу
Отсутствует