前端代码笔记
/* Developed by Robert Nyman, http://www.robertnyman.com Code/licensing: http://code.google.com/p/getelementsbyclassname/ */ var getElementsByClassName = function (className, tag, elm) { if (document.getElementsByClassName) { getElementsByClassName = function (className, tag, elm) { elm = elm || document; var elements = elm.getElementsByClassName(className), nodeName = (tag) ? new RegExp("\\b" + tag + "\\b", "i") : null, returnElements = [], current; for (var i = 0, il = elements.length; i < il; i += 1) { current = elements[i]; if (!nodeName || nodeName.test(current.nodeName)) { returnElements.push(current); } } return returnElements; }; } else if (document.evaluate) { getElementsByClassName = function (className, tag, elm) { tag = tag || "*"; elm = elm || document; var classes = className.split(" "), classesToCheck = "", xhtmlNamespace = "http://www.w3.org/1999/xhtml", namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace) ? xhtmlNamespace : null, returnElements = [], elements, node; for (var j = 0, jl = classes.length; j < jl; j += 1) { classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]"; } try { elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null); } catch (e) { elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null); } while ((node = elements.iterateNext())) { returnElements.push(node); } return returnElements; }; } else { getElementsByClassName = function (className, tag, elm) { tag = tag || "*"; elm = elm || document; var classes = className.split(" "), classesToCheck = [], elements = (tag === "*" && elm.all) ? elm.all : elm.getElementsByTagName(tag), current, returnElements = [], match; for (var k = 0, kl = classes.length; k < kl; k += 1) { classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)")); } for (var l = 0, ll = elements.length; l < ll; l += 1) { current = elements[l]; match = false; for (var m = 0, ml = classesToCheck.length; m < ml; m += 1) { match = classesToCheck[m].test(current.className); if (!match) { break; } } if (match) { returnElements.push(current); } } return returnElements; }; } return getElementsByClassName(className, tag, elm); }; function getUrlVars() { var vars = {}; var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { vars[key] = value; }); return vars; } function addSid(target) { // URL params pass for CTA buttons var locationUrl = window.location.href; var urlParams = locationUrl.substring(locationUrl.indexOf('?')+1); var sid = getUrlVars()["sid"]; if (urlParams != '' && typeof(sid) != "undefined") { for(t in target) { var currentHref = target[t].getAttribute('href'); if (currentHref.indexOf('?') == -1){ var endingSlash = ''; if (currentHref.substr(currentHref.length - 1) != '/') { endingSlash = '/'; } target[t].setAttribute('href', currentHref+endingSlash+'?sid='+sid); } else { target[t].setAttribute('href', currentHref + '&sid=' + sid); } } } for(t1 in target) { currentHref = target[t1].getAttribute('href'); if (currentHref.indexOf('HTTP_REFERER') != -1) { if (document.referrer && document.referrer != 'undefined') { currentHref = currentHref.replace('HTTP_REFERER', document.referrer); } else { currentHref = currentHref.replace('HTTP_REFERER', ''); } } if (currentHref.indexOf('HTTP_HOST') != -1) { if (window.location.hostname && window.location.hostname != 'undefined') { currentHref = currentHref.replace('HTTP_HOST', window.location.hostname); } else { currentHref = currentHref.replace('HTTP_HOST', ''); } } target[t1].setAttribute('href', currentHref); } };