Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // created from Snap Links Lite 1.2.4
- // https://chrome.google.com/webstore/detail/snap-links-lite/idmmhhijggcmbeejedibpdcahpkneegg?hl=en
- var ox = 0;
- var oy = 0;
- var onDown = false;
- var onWork = false;
- var obj = false;
- var objSub = [];
- var objSubLink = [];
- var blockContextMenu = false;
- var visibleOnly = 1;
- var button = 2;
- var reverse = 0;
- function eventMouseDown(e)
- {
- if(e.button != button)
- return true;
- e.stopPropagation();
- e.preventDefault();
- onDown = true;
- blockContextMenu = false;
- ox = e.pageX;
- oy = e.pageY;
- }
- function getBoxObjectForXY(element)
- {
- var x = 0;
- var y = 0;
- var parent = element;
- while ( parent ) {
- x += parent.offsetLeft;
- y += parent.offsetTop;
- parent = parent.offsetParent;
- }
- parent = element;
- while ( parent &&
- parent != document.body &&
- parent != document.documentElement ) {
- if ( parent.scrollLeft )
- x -= parent.scrollLeft;
- if ( parent.scrollTop )
- y -= parent.scrollTop;
- parent = parent.parentNode;
- }
- return { x:x, y:y};
- }
- function isVisible(obj)
- {
- var parent = obj;
- while ( parent ) {
- if(window.getComputedStyle(parent, null).display == 'none')
- return false;
- if(window.getComputedStyle(parent, null).visibility == 'hidden')
- return false;
- if(parseInt(window.getComputedStyle(parent, null).zIndex) < 0)
- return false;
- parent = parent.offsetParent;
- }
- return true;
- }
- function getBoxObjectFor(obj)
- {
- var xy = getBoxObjectForXY(obj);
- return {
- x:xy.x
- ,y:xy.y
- ,width:obj.offsetWidth
- ,height:obj.offsetHeight
- };
- }
- function eventMouseMove(e)
- {
- if(!onDown)
- return true;
- e.stopPropagation();
- e.preventDefault();
- if(!onWork)
- {
- if(Math.abs(ox - e.clientX) > 3
- && Math.abs(oy - e.clientY) > 3)
- {
- onWork = true;
- obj = document.createElement("div");
- (document.body || document.documentElement).appendChild(obj);
- obj.style.position = "absolute";
- obj.style.left = ox + "px";
- obj.style.top = oy + "px";
- obj.style.border = "1px dotted green";
- }
- }
- if(onWork)
- {
- if(e.pageX > ox)
- obj.style.width = (e.pageX - ox) + "px";
- else
- {
- obj.style.left = e.pageX + "px";
- obj.style.width = (ox - e.pageX) + "px";
- }
- if(e.pageY > oy)
- obj.style.height = (e.pageY - oy) + "px";
- else
- {
- obj.style.top = e.pageY + "px";
- obj.style.height = (oy - e.pageY) + "px";
- }
- while(objSub.length)
- obj.removeChild(objSub.pop());
- objSubLink = [];
- var tsize = getBoxObjectFor(obj);
- for(i = 0; i < document.links.length; i++){
- var link = document.links[i];
- lsize = getBoxObjectFor(link);
- if(link.href && link.href.indexOf('javascript:') >= 0)
- continue;
- if(!lsize || lsize.y + lsize.height < tsize.y || tsize.y + tsize.height < lsize.y)
- continue;
- if(!lsize || lsize.x + lsize.width < tsize.x || tsize.x + tsize.width < lsize.x)
- continue;
- if(visibleOnly && !isVisible(link))
- continue;
- var lover = document.createElement("div");
- lover.style.position = "absolute";
- lover.style.zIndex = "65535";
- lover.style.left = (lsize.x - tsize.x - 2) + "px";
- lover.style.top = (lsize.y - tsize.y - 2) + "px";
- lover.style.width = lsize.width + "px";
- lover.style.height = lsize.height + "px";
- lover.style.border = "1px solid red";
- objSub.push(lover);
- objSubLink.push(link.href);
- obj.appendChild(lover);
- }
- }
- }
- function eventMouseUp(e)
- {
- if(e.button != button)
- return true;
- if(onWork)
- {
- e.stopPropagation();
- e.preventDefault();
- for(var k in objSubLink)
- for(var j in objSubLink)
- if(k != j && objSubLink[k] == objSubLink[j])
- objSubLink[j] = false;
- if(reverse)
- objSubLink.reverse();
- for(var k in objSubLink)
- if(objSubLink[k])
- window.open(objSubLink[k]);
- blockContextMenu = true;
- obj.parentNode.removeChild(obj);
- objSub = [];
- objSubLink = [];
- }
- obj = onDown = onWork = false;
- }
- function eventContextmenu(e)
- {
- if(button == 2)
- if(blockContextMenu)
- e.preventDefault();
- }
- function eventMouseDrag(e)
- {
- if(e.button != button)
- return true;
- }
- window.addEventListener("mousedown", eventMouseDown, true);
- window.addEventListener("mousemove", eventMouseMove, true);
- window.addEventListener("mouseup", eventMouseUp, true);
- window.addEventListener("mousedrag", eventMouseDrag, true);
- document.addEventListener("contextmenu", eventContextmenu, true);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement