Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name Stupid image grabber
- // @namespace Anon still delivers
- // @description Open images under cursor in new tab or print link in console. Activates by pressing Ctrl+Shift+V (non used in Firefox)
- // @name:ru Захватчик изображений
- // @description:ru Открывает все изображения в новых вкладках или печатает ссылки в консоль. Работает по нажатию Ctrl+Shift+V
- // @include *
- // @version 0.2.7
- // @grant GM_openInTab
- // ==/UserScript==
- // Значения behavior:
- // 1. Запись в консоль ( доступна по Ctrl+Shift+K )
- // 2. Всплывающее окошечко
- // 3. Изображение открывается в новой вкладке
- (function(){
- const stimagr = {
- behavior: 3,
- debug : false,
- mouse : {x:0,y:0},
- start : function() {
- listChild(document.body);
- // Рекурсивный обход страницы
- function listChild(el) {
- // Перебор всех дочерних элементов
- for (let el1 of el.children) {
- if (isUnderCursor(el1)) {
- if( getImgLink(el1) ) {
- openImage( getImgLink(el1) );
- }
- }
- listChild(el1);
- }
- }
- function isUnderCursor(el) {
- const mouse = stimagr.mouse;
- el = el.getBoundingClientRect();
- if (mouse.x > el.left && mouse.x < el.left + el.width && mouse.y > el.top && mouse.y < el.top + el.height) {
- return true;
- }
- return false;
- }
- function openImage(link) {
- switch (stimagr.behavior) {
- case 1:
- console.log(link);
- break;
- case 2:
- alert(link);
- break;
- case 3:
- GM_openInTab(link);
- break;
- }
- }
- function getImgLink(el) {
- // Получаем значение backgroundImage элемента
- let img = window.getComputedStyle(el).backgroundImage;
- if (img.slice(0,3) == 'url') {
- return img.slice(5,-2);
- }
- // Если не удалось, проверяем, вдруг этот элемент — картинка в теге img, или ещё что-то содержащее атрибут src?
- if (el.nodeName == 'IMG' || el.hasAttribute('src') ) {
- return el.src;
- }
- // А вдруг это canvas?
- if (el.nodeName == 'CANVAS') {
- return el.toDataURL();
- }
- // Логгируем все странные элементы (обычно выводит всякие хитрые градиенты)
- if (stimagr.debug && img !== 'none') console.log(img);
- return false;
- }
- }
- };
- // Схоронение координат мыши
- document.addEventListener('mousemove', function (e) {
- stimagr.mouse.x = e.clientX;
- stimagr.mouse.y = e.clientY;
- });
- // Обработка нажатия клавиш
- document.addEventListener('keyup', function (e) {
- // Если получили Ctrl+Shift+V, начинаем обход страницы в поисках картинок
- if (e.ctrlKey && e.shiftKey && e.keyCode == 86) {
- stimagr.start();
- }
- });
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement