Advertisement
thetenfold

setXpathListener-JoeSimmons

Jun 19th, 2013
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function iterOver(xp) {
  2.  
  3.     var i, item;
  4.  
  5.     for(i = 0; (item = xp.snapshotItem(i)); i++) {
  6.  
  7.         item.removeAttribute("data-hovercard");
  8.  
  9.     }
  10.  
  11. }
  12.  
  13. function setXpathListener(expr, func, context, onTimer) {
  14.  
  15.     var i, xp, arg, len, _int,
  16.         _expr = (typeof expr === "string" ? expr : null),
  17.         _func = (typeof func === "function" ? func : null),
  18.         _context = (typeof context === "object" && context.nodeType === 1 ? context : document),
  19.         _onTimer = (typeof onTimer === "boolean" ? onTimer : false);
  20.  
  21.     if(_onTimer === false) {
  22.  
  23.         for(i = 0; (arg = arguments[i]); i++) {
  24.  
  25.             switch(typeof arg) {
  26.  
  27.                 case "boolean":
  28.                     if(!_onTimer && arg === true) _onTimer = true;
  29.                     break;
  30.  
  31.                 case "function":
  32.                     if(!_func) _func = arg;
  33.                     break;
  34.  
  35.                 case "string":
  36.                     if(!_expr) _expr = arg;
  37.                     break;
  38.  
  39.                 case "object":
  40.                     if(!_context && arg.nodeType === 1) _context = arg;
  41.                     break;
  42.  
  43.             }
  44.  
  45.         }
  46.  
  47.     }
  48.  
  49.     if(typeof _expr !== "string" || typeof _func !== "function") return;
  50.  
  51.     xp = document.evaluate(_expr, _context, null, 6, null);
  52.     len = xp.snapshotLength;
  53.  
  54.     if(len > 50) _int = 1750;
  55.         else if(len > 25) _int = 1500;
  56.         else if(len > 15) _int = 1250;
  57.         else if(len > 5) _int = 1000;
  58.         else if(len <= 5 && len !== 0) _int = 750;
  59.         else if(len === 0) _int = 500;
  60.  
  61.     document.title = "int:  " + _int + " - matches: " + len + " (" + Math.floor(Math.random() * 999) + ")";
  62.  
  63.     _func(xp); // run the user-specified function
  64.  
  65.     window.setTimeout(function() { // run this function again after some odd amount of time
  66.  
  67.         setXpathListener(_expr, _func, _context, true);
  68.  
  69.     }, _int);
  70.  
  71. }
  72.  
  73.  
  74. var expr = "//a[@data-hovercard]/img/..";
  75.  
  76. 1 && setXpathListener(expr, iterOver);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement