Guest User

Untitled

a guest
Feb 20th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. // $XA
  2. //
  3. // $XA(exp, context, resolver)(function(node){});
  4. function $XA(exp, context, resolver) {
  5. context || (context = document);
  6. var XPE = new XPathEvaluator();
  7. var Doc = context.ownerDocument || context, expr = XPE.createExpression(exp, resolver ? resolver :
  8. Doc.documentElement.namespaceURI ? function(prefix) {
  9. return XPE.createNSResolver(Doc.documentElement).lookupNamespaceURI(prefix) ||
  10. context.namespaceURI || document.documentElement.namespaceURI || "";
  11. } : null);
  12. var result = expr.evaluate(context, XPathResult.ANY_TYPE, null);
  13. switch (result.resultType) {
  14. case XPathResult.STRING_TYPE : return function(fnc,thisObject) {fnc.call(thisObject,result.stringValue);};
  15. case XPathResult.NUMBER_TYPE : return function(fnc,thisObject) {fnc.call(thisObject,result.numberValue);};
  16. case XPathResult.BOOLEAN_TYPE: return function(fnc,thisObject) {fnc.call(thisObject,result.booleanValue);};
  17. case XPathResult.UNORDERED_NODE_ITERATOR_TYPE:
  18. result = expr.evaluate(context, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, result);
  19. return function(fnc, thisObject) {
  20. for (var i = 0, len = result.snapshotLength; i < len; i++) {
  21. fnc.call(thisObject, result.snapshotItem(i));
  22. }
  23. };
  24. }
  25. return null;
  26. }
Add Comment
Please, Sign In to add comment