静态矩阵
工作找的郁闷,开博写文章

document.write('<script src=http://www.baidu.com/js/bdsug.js?v=1.0.3.0><\/script>')};

 

 

代码
  1 //H J O M P F N K
  2 
  3 //I E T R A Q D B
  4 
  5 (function() {
  6     //浏览器类型
  7     var L = navigator.userAgent.indexOf("MSIE"!= -1 && !window.opera;
  8     //当前浏览器采用的渲染方式
  9     var S = (document.compatMode == "BackCompat");    //用来判断当前浏览器采用的渲染方式。BackCompat:标准兼容模式关闭。CSS1Compat:标准兼容模式开启。
 10     //获得元素
 11     function H(C) {
 12         return document.getElementById(C)
 13     }
 14     //创建元素
 15     function J(C) {
 16         return document.createElement(C)
 17     }
 18     //向元素添加事件相应函数
 19     function O(G, U, C) {
 20         if (L) {
 21             G.attachEvent("on" + U, (function(V) { return function() { C.call(V) } })(G))
 22         }
 23         else {
 24             G.addEventListener(U, C, false)
 25         }
 26     }
 27     //终止事件冒泡
 28     function M(C) {
 29         if (L) {
 30             C.returnValue = false
 31         }
 32         else {
 33             C.preventDefault()
 34         }
 35     }
 36     //向<style>标签样式表中添加样式
 37     function P(C, U) {
 38         var V = document.styleSheets;
 39         if (!|| V.length <= 0) {
 40             var G = document.createElement("STYLE"); G.type = "text/css"var W = document.getElementsByTagName("HEAD")[0]; W.appendChild(G)
 41         }
 42         V = document.styleSheets;
 43         V = V[V.length - 1];
 44         if (L) {
 45             V.addRule(C, U)
 46         }
 47         else {
 48             V.insertRule(C + " { " + U + " }", V.cssRules.length)
 49         }
 50     }
 51 
 52     function F(G) {
 53         var U = document.forms[0];
 54         for (var V in G) {
 55             if (!N(V)) {
 56                 U.appendChild(C(V, G[V]))
 57             }
 58             else {
 59                 N(V).value = G[V]
 60             }
 61         }
 62         function C(W, Y) {
 63             var X = J("INPUT");
 64             X.type = "hidden";
 65             X.name = W;
 66             X.id = "bdsug_ipt_" + W; X.value = Y;
 67             return X
 68         }
 69     }
 70 
 71     function N(V) {
 72         var U = document.forms[0];
 73         var G = false;
 74         var C = U.getElementsByTagName("INPUT");
 75         for (var W = 0; W < C.length; W++) {
 76             if (V == C[W].getAttribute("name")) {
 77                 G = C[W];
 78                 return G
 79             }
 80             else {
 81                 G = false
 82             }
 83         }
 84     }
 85 
 86     function K(G) {
 87         var U = document.forms[0];
 88         for (var C in G) {
 89             if (C == "f") {
 90                 if (N("f")) {
 91                     if (N("f").id == "bdsug_ipt_f") {
 92                         U.removeChild(H("bdsug_ipt_f"))
 93                     }
 94                     else {
 95                         N("f").value = "8"
 96                     }
 97                 }
 98             }
 99             else {
100                 if (H("bdsug_ipt_" + C)) {
101                     U.removeChild(H("bdsug_ipt_" + C))
102                 }
103             }
104         }
105     }
106 
107     //baidu对象
108     if (typeof window.baidu != "object" || window.baidu == null) {
109         window.baidu = {}
110     }
111     //百度suggestion对象
112     baidu.sug = {};
113     //百度suggestion监控对象
114     baidu.sugkeywatcher = {};
115 
116     //动作处理类模型
117     var I = (function() {
118         //将额外的参数压入__MSG_QS__[Y]
119         function C(Y) {
120             var W = this.__MSG_QS__;
121             if (!W[Y]) {
122                 W[Y] = []
123             }
124             for (var X = 1, U = arguments.length, V; X < U; X++) {
125                 W[Y].push(arguments[X])
126             }
127         }
128 
129         function G(V) {
130             var W = this.__MSG_QS__[V.type];
131             if (W == null) { return }
132             for (var X = 0, U = W.length; X < U; X++) {
133                 W[X].rm(V)
134             }
135         }
136 
137         return { ini: function(U) {
138             //空对象,一个数组
139             U.__MSG_QS__ = {};
140             U.on = C;
141             U.dm = G;
142             return U
143         }
144         }
145     })();
146     //百度suggestion管理(input部分)
147     var E = (function() {
148         //关键字input
149         var W = H("kw");
150         var C;
151         //setInterval的timer id (function G)
152         var g = 0;
153         var e = 0;
154         //关键字input 的value
155         var U = "";
156         var b = "";
157         var f;
158         var Z = false;
159         var X = true;
160 
161         function h() {
162             if (X) { E.dm({ type: "start" }); X = false }
163         }
164 
165         function c(j) {
166             if (X) {
167                 E.dm({ type: "start" }); X = false
168             } j = j || window.event;
169             if (j.keyCode == 9 || j.keyCode == 27) { E.dm({ type: "hide_div" }) }
170             if (j.keyCode == 13) { M(j); E.dm({ type: "key_enter" }) }
171             if (C.style.display != "none") {
172                 if (j.keyCode == 38) { M(j); E.dm({ type: "key_up" }) }
173                 if (j.keyCode == 40) {
174                     E.dm({ type: "key_down" })
175                 }
176             }
177             else {
178                 if (j.keyCode == 38 || j.keyCode == 40) {
179                     E.dm({ type: "need_data", wd: W.value })
180                 }
181             }
182         }
183         function G() {
184             var j = W.value;
185             if (j == U && j != "" && j != b && j != f) {
186                 if (e == 0) {
187                     e = setTimeout(function() {
188                         E.dm({ type: "need_data", wd: j })
189                     }, 100)
190                 }
191             }
192             else {
193                 clearTimeout(e);
194                 e = 0;
195                 U = j;
196                 if (j == "") { E.dm({ type: "hide_div" }) }
197                 if (b != W.value) { b = "" }
198             }
199         }
200         //打开定时器并保存句柄
201         function i() {
202             g = setInterval(G, 10)
203         }
204         //关闭定时器
205         function Y() {
206             clearInterval(g)
207         }
208         //取消事件冒泡
209         function a() {
210             if (Z) { window.event.cancelBubble = true; window.event.returnValue = false; Z = false }
211         }
212         //关键字input 的autocomplete属性
213         function V(j) {
214             W.blur(); W.setAttribute("autocomplete", j); W.focus()
215         }
216         W.setAttribute("autocomplete""off");
217         var d = false;
218         //绑定搜索input onkeydown/keydown事件绑定(键盘按下)
219         baidu.sugkeywatcher.on = function() {
220             if (!d) {
221                 if (L) {
222                     W.attachEvent("onkeydown", c)
223                 }
224                 else {
225                     W.addEventListener("keydown", c, false)
226                 }
227                 d = true
228             }
229         };
230         //取消绑定搜索input onkeydown/keydown事件绑定(键盘按下)
231         baidu.sugkeywatcher.off = function() {
232             if (d) {
233                 if (L) { W.detachEvent("onkeydown", c) } else {
234                     W.removeEventListener("keydown", c, false)
235                 }
236                 d = false
237             }
238         };
239         baidu.sugkeywatcher.on();
240         //绑定搜索input onmousedown事件(鼠标按下)
241         O(W, "mousedown", h);
242         //绑定搜索input onbeforedeactivate事件(失去焦点,另一个元素的onfocus之前。)(onblur是在另一个元素onfocus之后)
243         O(W, "beforedeactivate", a);
244 
245         return I.ini({ rm: function(j) {
246             switch (j.type) {
247                 case "div_ready": C = j.sdiv; b = W.value; i(); break;
248                 case "clk_submit": Y(); W.blur(); W.value = j.wd; break;
249                 case "ent_submit": Y(); W.blur(); break;
250                 case "key_select": f = j.selected; break;
251                 case "close": Y(); V("on"); break;
252                 case "mousedown_tr": Z = truebreak
253             }
254         }
255         })
256     })();
257     //百度suggestion管理(table部分)
258     var T = (function() {
259         var e;
260         var X = H("kw");
261         var i;
262         var a = -1;
263         var C;
264         var j;
265         var l;
266         //设置百度suggestion 列表tr未选中样式
267         function k() {
268             var m = i.rows;
269             for (var U = 0; U < m.length; U++) {
270                 m[U].className = "ml"
271             }
272         }
273         function b() {
274             if (typeof (i) != "undefined" && i != null && e.style.display != "none") {
275                 var m = i.rows;
276                 for (var U = 0; U < m.length; U++) {
277                     if (m[U].className == "mo") {
278                         return [U, m[U].cells[0].innerHTML]
279                     }
280                 }
281             }
282             return [-1""]
283         }
284         function f() {
285             if (L) {
286                 l.style.display = "none"
287             }
288             e.style.display = "none"
289         }
290         //设置百度suggestion 列表tr选中样式(鼠标经过)
291         function G() {
292             k(); this.className = "mo"
293         }
294         function Y(U) {
295             T.dm({ type: "mousedown_tr" });
296             if (!L) {
297                 U.stopPropagation(); U.preventDefault(); return false
298             }
299         }
300         function Z(U) {
301             var m = U;
302             return function() {
303                 var n = C[m];
304                 f();
305                 T.dm({ type: "clk_submit", oq: H("kw").value, wd: n, rsp: m })
306             }
307         }
308         function c(U) {
309             U = U || window.event;
310             M(U);
311             T.dm({ type: "close" });
312             f();
313             //!!!
314             (new Image()).src = "http://s.baidu.com/w.gif?fm=suggestion&title=%B9%D8%B1%D5&t=" + new Date().getTime()
315         }
316         //百度suggestion table 布局
317         function V() {
318             var U = [X.offsetWidth, X.offsetHeight];
319             e.style.width = ((L && S) ? U[0] : U[0- 2+ "px";
320             e.style.top = ((L && S) ? U[1] : U[1- 1+ "px";
321             e.style.display = "block";
322             if (L) {
323                 l.style.top = ((L && S) ? U[1] : U[1- 1+ "px";
324                 l.style.width = ((L && S) ? U[0] : U[0- 2+ "px"
325             }
326         }
327         //绑定百度suggestion table事件处理
328         function g() {
329             i = J("TABLE");
330             i.id = "st";
331             i.cellSpacing = 0;
332             i.cellPadding = 2;
333             var p = J("tbody");
334             i.appendChild(p);
335             for (var U = 0, m = C.length; U < m; U++) {
336                 var o = p.insertRow(-1);
337                 O(o, "mouseover", G);
338                 O(o, "mouseout", k);
339                 O(o, "mousedown", Y);
340                 O(o, "click", Z(U));
341                 var n = o.insertCell(-1);
342                 n.innerHTML = C[U].replace(/&/g, "&amp;")
343             }
344             e.innerHTML = "";
345             e.appendChild(i);
346             V();
347             if (L) {
348                 l.style.display = "block";
349                 l.style.left = 0 + "px";
350                 l.style.top = X.offsetHeight + "px";
351                 l.style.width = X.offsetWidth + "px";
352                 l.style.height = e.offsetHeight - 10 + "px"
353             }
354         }
355         //回车键按下事件处理
356         function W() {
357             a = b()[0];
358             if (a == -1) {
359                 T.dm({ type: "submit" })
360             }
361             else {
362                 T.dm({ type: "ent_submit", oq: j, wd: b()[1], rsp: a })
363             }
364         }
365         //上箭头键按下事件处理
366         function h() {
367             a = b()[0];
368             k();
369             if (a == 0) {
370                 T.dm({ type: "key_select", selected: "" });
371                 H("kw").value = j; a--;
372                 K({ oq: j, sug: C[a], n: 1, rsp: a, f: 3 })
373             }
374             else {
375                 if (a == -1) {
376                     a = C.length
377                 }
378                 a--;
379                 var U = i.rows[a];
380                 U.className = "mo";
381                 T.dm({ type: "key_select", selected: C[a] });
382                 H("kw").value = C[a];
383                 F({ oq: j, sug: C[a], n: 1, rsp: a, f: 3 })
384             }
385         }
386         //下箭头键按下事件处理
387         function d() {
388             a = b()[0];
389             k();
390             if (a == C.length - 1) {
391                 T.dm({ type: "key_select", selected: "" });
392                 H("kw").value = j;
393                 a = -1; K({ oq: j, sug: C[a], n: 1, rsp: a, f: 3 })
394             }
395             else {
396                 a++var U = i.rows[a]; U.className = "mo";
397                 T.dm({ type: "key_select", selected: C[a] });
398                 H("kw").value = C[a];
399                 F({ oq: j, sug: C[a], n: 1, rsp: a, f: 3 })
400             }
401         }
402         return I.ini({ rm: function(U) {
403             switch (U.type) {
404                 case "div_ready": e = U.sdiv; l = U.frm; break;
405                 case "give_data": j = U.data.q; C = U.data.s; if (C.length != 0) { g() } else { f() } break;
406                 case "key_enter": W(); break
407                 case "key_up": h(); break;
408                 case "key_down": d(); break
409                 case "hide_div": f(); break;
410                 case "mousedown_other": f(); break;
411                 case "window_blur": f(); break
412                 case "need_resize": V(); break
413             }
414         }
415         }
416         )
417     })();
418     //subbmit事件管理
419     var R = (function() {
420         var C = document.forms[0];
421         //form提交事件处理函数
422         function G() {
423             if (H("bdsug_ipt_sug")) {
424                 if (H("bdsug_ipt_sug").value == H("kw").value) {
425                     K({ n: 1, sug: 1 })
426                 }
427                 else {
428                     K({ f: 1 })
429                 }
430             }
431         }
432         //form提交事件处理
433         O(C, "submit", G);
434 
435         function U() {
436             G();
437             C.submit()
438         }
439         function V(W) {
440             F(W);
441             K({ sug: 1, n: 1 });
442             C.submit()
443         }
444 
445         return I.ini({ rm: function(W) {
446             switch (W.type) {
447                 case "clk_submit":
448                 case "ent_submit": V({ oq: W.oq, rsp: W.rsp, f: 3 }); break;
449                 case "submit": U(); break
450             }
451         }
452         })
453     })();
454     //百度suggestion ajax数据管理
455     var A = (function() {
456         var G = {};
457         function U(C) {
458             if (typeof G[C] == "undefined") {
459                 A.dm({ type: "request_data", wd: C })
460             } else {
461                 A.dm({ type: "give_data", data: G[C] })
462             }
463         }
464         function V(C) {
465             G[C.q] = C;
466             A.dm({ type: "give_data", data: G[C.q] })
467         }
468         return I.ini({ rm: function(C) {
469             switch (C.type) {
470                 case "response_data": V(C.data); break;
471                 case "need_data": U(C.wd); break
472             }
473         }
474         })
475     })();
476 
477     //baidu suggestion查询管理
478     var Q = (function() {
479         var C;
480         var U;
481         //ajax方法,根据关键字获取baidu suggestion内容,
482         //一个示例:
483         //http://suggestion.baidu.com/su?wd=%E7%9A%84&p=3&t=1274410201491
484         //window.baidu.sug({q:"的",p:false,s:["的卢","的士高","的士速递","的卢马","的士高舞曲","的士高 野人疯狂版","的 地 得的用法","的繁体字怎么写","的士高舞曲视频","的士速递1"]});
485         function G(V) {
486             Q.dm({ type: "need_cookie" });
487             if (C) {
488                 document.body.removeChild(C)
489             }
490             C = J("SCRIPT");
491             //!!!
492             C.src = "http://suggestion.baidu.com/su?wd=" + encodeURIComponent(V) + "&p=" + U + "&t=" + (new Date()).getTime();
493             C.charset = "gb2312";
494             document.body.appendChild(C)
495         }
496         return I.ini({ rm: function(V) {
497             switch (V.type) {
498                 case "request_data": G(V.wd); break;
499                 case "give_cookie"var W = V.sug; if (W > 0) { W = 3 } U = W; break
500             }
501         }
502         })
503     })();
504 
505     baidu.sug = function(C) { baidu.dm({ type: "response_data", data: C }) };
506     baidu.initSug = function() { baidu.dm({ type: "init" }) };
507     I.ini(baidu);
508 
509     //cookie管理
510     var D = (function() {
511         function C() {
512             if (navigator.cookieEnabled) {
513                 document.cookie = "su=0; domain=www.baidu.com"
514             }
515         }
516         function G() {
517             var U = (navigator.cookieEnabled && /sug=(\d)/.test(document.cookie) ? RegExp.$1 : 3);
518             D.dm({ type: "give_cookie", sug: U })
519         }
520         return I.ini({ rm: function(U) {
521             switch (U.type) {
522                 case "close": C(); break;
523                 case "need_cookie": G(); break
524             }
525         }
526         })
527     })();
528     //百度suggestion 显示管理
529     var B = (function() {
530         //input id=kw name=wd
531         var W = H("kw");
532         //div id=sd_1274332392357
533         var C;
534         //Form
535         var Z = document.forms[0];
536         //
537         var V;
538         //
539         function X() {
540             if (C.offsetWidth != 0 && W.offsetWidth != C.offsetWidth) {
541                 B.dm({ type: "need_resize" })
542             }
543         }
544         //插入iframe
545         function a() {
546             C = J("DIV");
547             C.id = "sd_" + new Date().getTime();
548             C.style.display = "none";
549             Z.appendChild(C);
550             if (L) {
551                 V = J("IFRAME"); V.style.display = "none"; V.style.position = "absolute";
552                 C.parentNode.insertBefore(V, C)
553             }
554         }
555         function Y(b) {
556             b = b || window.event;
557             var c = b.target || b.srcElement;
558             if (c == W) { return }
559             while (c = c.parentNode) {
560                 if (c == C) { return }
561             }
562             B.dm({ type: "mousedown_other" })
563         }
564         function U() {
565             B.dm({ type: "window_blur" })
566         }
567         //
568         function G() {
569             B.dm({ type: "div_ready", sdiv: C, frm: V });
570             //页面onmousedown事件处理程序
571             setInterval(X, 100); O(document, "mousedown", Y);
572             //窗口onblur事件处理程序
573             O(window, "blur", U);
574             //以下代码动态添加<style>标签的内容
575             //C.id <DIV style="DISPLAY: none" id="sd_1274422507294"> 其中sd_1274422507294中的数字是new Date().getTime();
576             P("#" + C.id, "border:1px solid #817F82;position:absolute;top:28px;left:0");
577             P("#" + C.id + " table""width:100%;background:#fff;cursor:default");
578             P("#" + C.id + " td""font:14px verdana");
579             //
580             P(".mo""background-color:#36c;color:#fff");
581             P(".ml""background-color:#fff;color:#000")
582         }
583         baidu.sug.initial = G;
584         return I.ini({ rm: function(b) {
585             switch (b.type) {
586                 case "start": G(); break;
587                 case "init": a(); break
588             }
589         }
590         })
591     })();
592 
593     E.on("need_data", A);
594     E.on("close_div", T);
595     E.on("key_enter", T);
596     E.on("key_up", T);
597     E.on("key_down", T);
598     E.on("hide_div", T);
599     E.on("start", B);
600     A.on("request_data", Q);
601     A.on("give_data", T);
602 
603     baidu.on("response_data", A);
604     baidu.on("init", B);
605 
606     T.on("clk_submit", E, R);
607     T.on("ent_submit", E, R);
608     T.on("submit", R);
609     T.on("key_select", E);
610     T.on("close", E, D);
611     T.on("mousedown_tr", E);
612     B.on("mousedown_other", T);
613     B.on("need_resize", T);
614     B.on("div_ready", E, T);
615     B.on("window_blur", T);
616     Q.on("need_cookie", D);
617     D.on("give_cookie", Q);
618     window.baidu.initSug()
619 })();
620 

 

 

posted on 2010-05-21 14:54  静态矩阵  阅读(2303)  评论(2编辑  收藏  举报