Advertisement
Guest User

Snap Links Lite 1.2.4 User JS

a guest
Aug 1st, 2013
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // created from Snap Links Lite 1.2.4
  2. // https://chrome.google.com/webstore/detail/snap-links-lite/idmmhhijggcmbeejedibpdcahpkneegg?hl=en
  3.  
  4. var ox = 0;
  5. var oy = 0;
  6. var onDown = false;
  7. var onWork = false;
  8. var obj = false;
  9. var objSub = [];
  10. var objSubLink = [];
  11. var blockContextMenu = false;
  12.  
  13. var visibleOnly = 1;
  14. var button = 2;
  15. var reverse = 0;
  16.  
  17. function eventMouseDown(e)
  18. {
  19.     if(e.button != button)
  20.         return true;
  21.     e.stopPropagation();
  22.     e.preventDefault();
  23.     onDown = true;
  24.     blockContextMenu = false;
  25.     ox = e.pageX;
  26.     oy = e.pageY;
  27. }
  28.  
  29. function getBoxObjectForXY(element)
  30. {
  31.     var x = 0;
  32.     var y = 0;
  33.     var parent = element;
  34.     while ( parent ) {
  35.         x += parent.offsetLeft;
  36.         y += parent.offsetTop;
  37.         parent = parent.offsetParent;
  38.     }
  39.  
  40.     parent = element;
  41.     while ( parent &&
  42.     parent != document.body &&
  43.     parent != document.documentElement ) {
  44.         if ( parent.scrollLeft  )
  45.             x -= parent.scrollLeft;
  46.         if ( parent.scrollTop )
  47.             y -= parent.scrollTop;
  48.         parent = parent.parentNode;
  49.     }
  50.  
  51.     return { x:x, y:y};
  52. }
  53. function isVisible(obj)
  54. {
  55.     var parent = obj;
  56.     while ( parent ) {
  57.         if(window.getComputedStyle(parent, null).display == 'none')
  58.             return false;
  59.         if(window.getComputedStyle(parent, null).visibility == 'hidden')
  60.             return false;
  61.         if(parseInt(window.getComputedStyle(parent, null).zIndex) < 0)
  62.             return false;
  63.         parent = parent.offsetParent;
  64.     }
  65.     return true;
  66. }
  67. function getBoxObjectFor(obj)
  68. {
  69.     var xy = getBoxObjectForXY(obj);
  70.     return {
  71.         x:xy.x
  72.         ,y:xy.y
  73.         ,width:obj.offsetWidth
  74.         ,height:obj.offsetHeight
  75.     };
  76. }
  77. function eventMouseMove(e)
  78. {
  79.     if(!onDown)
  80.         return true;
  81.     e.stopPropagation();
  82.     e.preventDefault();
  83.     if(!onWork)
  84.     {
  85.         if(Math.abs(ox - e.clientX) > 3
  86.             && Math.abs(oy - e.clientY) > 3)
  87.         {
  88.             onWork = true;
  89.             obj = document.createElement("div");
  90.             (document.body || document.documentElement).appendChild(obj);
  91.             obj.style.position = "absolute";
  92.             obj.style.left = ox + "px";
  93.             obj.style.top = oy + "px";
  94.             obj.style.border = "1px dotted green";
  95.         }
  96.     }
  97.     if(onWork)
  98.     {
  99.         if(e.pageX > ox)
  100.             obj.style.width = (e.pageX - ox) + "px";
  101.         else
  102.         {
  103.             obj.style.left = e.pageX + "px";
  104.             obj.style.width = (ox - e.pageX) + "px";
  105.         }
  106.         if(e.pageY > oy)
  107.             obj.style.height = (e.pageY - oy) + "px";
  108.         else
  109.         {
  110.             obj.style.top = e.pageY + "px";
  111.             obj.style.height = (oy - e.pageY) + "px";
  112.         }
  113.         while(objSub.length)
  114.             obj.removeChild(objSub.pop());
  115.         objSubLink = [];
  116.  
  117.         var tsize = getBoxObjectFor(obj);
  118.  
  119.         for(i = 0; i < document.links.length; i++){
  120.             var link = document.links[i];
  121.             lsize = getBoxObjectFor(link);
  122.  
  123.             if(link.href && link.href.indexOf('javascript:') >= 0)
  124.                 continue;
  125.             if(!lsize || lsize.y + lsize.height < tsize.y || tsize.y + tsize.height < lsize.y)
  126.                 continue;
  127.             if(!lsize || lsize.x + lsize.width < tsize.x || tsize.x + tsize.width < lsize.x)
  128.                 continue;
  129.             if(visibleOnly && !isVisible(link))
  130.                 continue;
  131.  
  132.             var lover = document.createElement("div");
  133.             lover.style.position = "absolute";
  134.             lover.style.zIndex = "65535";
  135.             lover.style.left = (lsize.x - tsize.x - 2) + "px";
  136.             lover.style.top = (lsize.y - tsize.y - 2) + "px";
  137.             lover.style.width = lsize.width + "px";
  138.             lover.style.height = lsize.height + "px";
  139.             lover.style.border = "1px solid red";
  140.  
  141.             objSub.push(lover);
  142.             objSubLink.push(link.href);
  143.  
  144.             obj.appendChild(lover);
  145.         }
  146.     }
  147. }
  148.  
  149. function eventMouseUp(e)
  150. {
  151.     if(e.button != button)
  152.         return true;
  153.  
  154.     if(onWork)
  155.     {
  156.         e.stopPropagation();
  157.         e.preventDefault();
  158.  
  159.         for(var k in objSubLink)
  160.             for(var j in objSubLink)
  161.                 if(k != j && objSubLink[k] == objSubLink[j])
  162.                     objSubLink[j] = false;
  163.  
  164.         if(reverse)
  165.             objSubLink.reverse();
  166.         for(var k in objSubLink)
  167.             if(objSubLink[k])
  168.                 window.open(objSubLink[k]);
  169.  
  170.         blockContextMenu = true;
  171.         obj.parentNode.removeChild(obj);
  172.         objSub = [];
  173.         objSubLink = [];
  174.     }
  175.  
  176.     obj = onDown = onWork = false;
  177. }
  178. function eventContextmenu(e)
  179. {
  180.     if(button == 2)
  181.         if(blockContextMenu)
  182.             e.preventDefault();
  183. }
  184. function eventMouseDrag(e)
  185. {
  186.     if(e.button != button)
  187.         return true;
  188. }
  189.  
  190. window.addEventListener("mousedown", eventMouseDown, true);
  191. window.addEventListener("mousemove", eventMouseMove, true);
  192. window.addEventListener("mouseup", eventMouseUp, true);
  193. window.addEventListener("mousedrag", eventMouseDrag, true);
  194. document.addEventListener("contextmenu", eventContextmenu, true);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement