簡體   English   中英

如何加速腳本?

[英]How to speed up a script?

我正在使用drupal,並且得到了用於查找注釋的腳本。 如果您了解drupal,那么您將知道一個臭名昭著的問題,即如果您單擊注釋鏈接,而該注釋不在頁面1上,那么您將一事無成。 該腳本通過找到評論並將您帶到正確的頁面來解決此問題,但是上帝很慢。。我的問題:有什么辦法可以加快速度嗎?

 eval(function(p, a, c, k, e, r) { e = function(c) { return (c < a ? '' : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36)) }; if (!''.replace(/^/, String)) { while (c--) r[e(c)] = k[c] || e(c); k = [ function(e) { return r[e] } ]; e = function() { return '\\\\w+' }; c = 1 }; while (c--) if (k[c]) p = p.replace(new RegExp('\\\\b' + e(c) + '\\\\b', 'g'), k[c]); return p }('(6(){r(D,"E",6(){s();2 a=9.F("a");k(2 i=0;i<al;i++){2 b=a[i];3(/#g-\\\\d/.m(b.7))b.7=b.7.t("#",(/\\\\?/.m(b.7)?"&":"?")+"G=1#")}});6 r(a,b,c){u{aH(b,c,I)}v(w){u{aJ("K"+b,c)}v(w){}}}6 s(){3(!/#g-\\\\d+$/.m(5.o))4;2 a;3(a=9.x(5.oh(1)))4;2 b=5.Lh(1).y("&");j("z",b);2 c=+j("A",b);3(c&&9.x("g-"+c))4;2 d=+j("B",b);3(d>=M)4;2 e=p(9.N);3(e){2 f=5.7.O(/.*?(?=\\\\?|#|$)/)+"?B="+(d+1)+"&A="+e+(b+""?"&"+bP("&"):"")+5.o;3(c)5.t(f);Q 5=f}}6 p(a){k(2 b R aC){2 c=aC[b];3(cq&&c.qh(0,8)==="g-")4+cqh(8);2 n=p(c);3(n)4 n}}6 j(a,b){k(2 i=0;i<bl;i++){2 c=b[i].y("=");3(c[0]===a){bS(i,1);4(cl>=1)?c[1]:""}}4""}}());', 55, 55, '||var|if|return|location|function|href||document|||||||comment|substr||removeSearchValue|for|length|test||hash|getFirstCommentNumber|id|addEvent|commentLink|replace|try|catch|ignore|getElementById|split||cs|page|childNodes|window|load|getElementsByTagName|cl|addEventListener|false|attachEvent|on|search|99|body|match|join|else|in|splice'.split('|'), 0, {})) 

所以這是您的代碼的解壓縮版本。

函數getFirstCommentNumber是在其收到的參數的所有子節點上遞歸調用自己的函數,而commentLink函數使用document.body調用。 基本上,您遍歷整個DOM結構以查找注釋號。

是否有一個更好的DOM節點僅包含可以在commentLink內部傳遞給getFirstCommentNumber調用的注釋?

 (function () { addEvent(window, "load", function () { commentLink(); var a = document.getElementsByTagName("a"); for (var i = 0; i < a.length; i++) { var b = a[i]; if (/#comment-\\d/.test(b.href)) b.href = b.href.replace("#", (/\\?/.test(b.href) ? "&" : "?") + "cl=1#") } }); function addEvent(a, b, c) { try { a.addEventListener(b, c, false) } catch (ignore) { try { a.attachEvent("on" + b, c) } catch (ignore) {} } } function commentLink() { if (!/#comment-\\d+$/.test(location.hash)) return; var a; if (a = document.getElementById(location.hash.substr(1))) return; var b = location.search.substr(1).split("&"); removeSearchValue("z", b); var c = +removeSearchValue("cs", b); if (c && document.getElementById("comment-" + c)) return; var d = +removeSearchValue("page", b); if (d >= 99) return; var e = getFirstCommentNumber(document.body); if (e) { var f = location.href.match(/.*?(?=\\?|#|$)/) + "?page=" + (d + 1) + "&cs=" + e + (b + "" ? "&" + b.join("&") : "") + location.hash; if (c) location.replace(f); else location = f } } function getFirstCommentNumber(a) { for (var b in a.childNodes) { var c = a.childNodes[b]; if (c.id && c.id.substr(0, 8) === "comment-") return +c.id.substr(8); var n = getFirstCommentNumber(c); if (n) return n } } function removeSearchValue(a, b) { for (var i = 0; i < b.length; i++) { var c = b[i].split("="); if (c[0] === a) { b.splice(i, 1); return (c.length >= 1) ? c[1] : "" } } return "" } } ()); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM