>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Скрипты http://forum.mozilla-russia.org/viewforum.php?id=37 >[+BM] Make Embeds Resizeable http://forum.mozilla-russia.org/viewtopic.php?id=52071 |
iDev.Pi > 24-10-2011 01:51:32 |
Make Embeds Resizeable Автор: panzi Описание: этот скрипт позволяет изменять размеры врезанных (embedded) видео-роликов (работающих через флеш-плеер). Использование: установите скрипт, зайдите на любой сайт, где есть флеш-видео. Чтобы изменить размер видео, следует зайти в меню вашего скрипт-менеджера (вашим скрипт-менеджером может быть Scriptish, Greasemonkey или ещё что-то). Аналоги: на страничке автора этого скрипта есть букмарклет версия этого скрипта. Копия этого же букмарклета на другом хостинге. Установить: с USO. Код скрипта Выделить код Код:// ==UserScript== // @name Make Embeds Resizeable // @namespace http://twoday.tuwien.ac.at/pub/ // @description makes flash videos resizeable // @include * // ==/UserScript== var body = document.getElementsByTagName("body")[0]; var MIN_SIZE = 15; function insertAfter(node,newNode) { if (node.nextSibling == null) { node.parentNode.appendChild(newNode); } else { node.parentNode.insertBefore(newNode,node.nextSibling); } } function getDim(node,dim) { var value = node['offset'+dim.substring(0,1).toUpperCase()+dim.substring(1)]; if (value != 0) { return value; } value = node[dim]; if (value != undefined) { return parseInt(value); } value = node.style[dim]; if (/.*py$/.test(value)) { return parseInt(value); } if (/.*em$/.test(value)) { return parseInt(value) * 16; } return 0; } function addListener(grabber,nodes_to_resize) { var mouseDown = false; var moveX = 0; var moveY = 0; var width = 0; var height = 0; var preserveAspect = false; for (var i = 0; i < nodes_to_resize.length; ++ i) { var node = nodes_to_resize[i]; if (width == 0) { width = getDim(node, 'width'); } if (height == 0) { height = getDim(node, 'height'); } } var aspect = width / height; grabber.style.left=(width - 10) + "px"; grabber.style.top="-10px"; grabber.addEventListener("mousedown", function(e) { if (e.button == 0) { preserveAspect = e.ctrlKey; aspect = width / height; body.style.MozUserSelect="none"; mouseDown = true; moveX = e.pageX; moveY = e.pageY; return false; } return true; }, true); window.addEventListener("mousemove", function(e) { if (e.button == 0 && mouseDown) { var newWidth = width + e.pageX - moveX; var newHeight = height + e.pageY - moveY; if (preserveAspect && aspect != (newWidth/newHeight)) { newHeight = Math.sqrt(newWidth*newHeight/aspect); newWidth = newHeight * aspect; } if (newWidth >= MIN_SIZE) { grabber.style.left=(newWidth-10)+"px"; for (var i = 0; i < nodes_to_resize.length; ++ i) { var node = nodes_to_resize[i]; node.style.width = newWidth+"px"; node.width = width = newWidth; } moveX = e.pageX; } if (newHeight >= MIN_SIZE) { for (var i = 0; i < nodes_to_resize.length; ++ i) { var node = nodes_to_resize[i]; node.style.height = newHeight+"px"; node.height = height = newHeight; } moveY = e.pageY; } return false; } return true; }, true); window.addEventListener("mouseup", function(e) { if (e.button == 0 && mouseDown) { body.style.MozUserSelect="text"; mouseDown = false; return false; } return true; }, true); } var madeResizeable = {}; function makeResizeable(node) { if (!madeResizeable[node]) { var prev = node; var nodes_to_resize = [node]; while (prev.parentNode != undefined && (prev.parentNode.tagName == "OBJECT" || prev.parentNode.tagName == "A")) { prev = prev.parentNode; nodes_to_resize.push(prev); } var grabber = document.createElement("div"); grabber.madeResizeable=true; grabber.style.width="15px"; grabber.style.height="15px"; grabber.style.borderStyle="solid"; grabber.style.borderWidth="2px"; grabber.style.borderColor="#333333"; grabber.style.backgroundColor="#6a6a6a"; grabber.style.cursor="se-resize"; grabber.style.position="relative"; grabber.style.MozUserSelect="none"; addListener(grabber,nodes_to_resize); insertAfter(prev,grabber); for (var i = 0; i < nodes_to_resize.length; ++ i) { madeResizeable[nodes_to_resize[i]] = true; } madeResizeable[grabber] = true; } } function makeAllResizeable(nodes) { for (var i = 0; i < nodes.length; ++ i) { makeResizeable(nodes[i]); } } GM_registerMenuCommand("Make Embeds Resizable", function() { makeAllResizeable(document.getElementsByTagName("embed")); makeAllResizeable(document.getElementsByTagName("object")); makeAllResizeable(document.getElementsByTagName("textarea")); }, undefined, undefined, "R"); |
vitalii201 > 04-11-2011 14:24:27 |
Букмарклет можно взять здесь. |