(function() { //下面为帮助函数******************************************************
var M = navigator.userAgent.indexOf("MSIE") != -1 && !window.opera;//浏览器不是IE 同时不是opera[挪威浏览器] 返回true
var V = (document.compatMode == "BackCompat");//可以用来判断当前页面采用的渲染方式
alert('this browser is '+(M?'IE':'non-IE'));
alert('this browser version is IE5.5? '+V) ; function I(C) {//得到一个对象
return document.getElementById(C)
}
function K(C) {//创建一个对象
return document.createElement(C)
}
function S(C) {//消除输入字符串前后的半角和全角空格
return String(C).replace(new RegExp("(^[\\s\\t\\xa0\\u3000]+)|([\\u3000\\xa0\\s\\t]+\x24)", "g"), "")
}
function U(C) {
return String(C).replace(new RegExp("[\\s\\t\\xa0\\u3000]", "g"), "")
}
function P(X, G, C) {
if (M)
{
//ie浏览器下注册事件,attachEvent(事件类型, 处理函数);
X.attachEvent("on" + G,
(
function(Y)
{
return function()
{
C.call(Y)
}
}
)(X))
} else {
//非ie浏览器下注册事件,对应的函数是addEventListener(事件类型, 处理函数, 使用捕获);
X.addEventListener(G, C, false)
}
}
function N(C) {
if (M) {
//ie浏览器
C.returnValue = false
} else {
//非ie
C.preventDefault()//preventDefault方法就是可以阻止它的默认行为的发生而发生其他的事情。
}
}
function R(G) {
if (M)
{
//ie浏览器,为元素添加样式
var X = document.createStyleSheet();
X.cssText = G
} else {
//非ie
var C = document.createElement("style");
C.type = "text/css";
C.appendChild(document.createTextNode(G));
document.getElementsByTagName("HEAD")[0].appendChild(C)
}
}
function H(Y) {
var X = document.forms[0];
for (var G in Y) {
if (Y[G] == undefined) {
if (I("bdsug_ipt_" + G)) {
X.removeChild(I("bdsug_ipt_" + G))
}
} else {
if (!O(G)) {
X.appendChild(C(G, Y[G]))
} else {
O(G).value = Y[G]
}
}
}
function C(b, Z) {
var a = K("INPUT");
a.type = "hidden";
a.name = b;
a.id = "bdsug_ipt_" + b;
a.value = Z;
return a
}
}
function O(X) {//表单中input的name
var Y = document.forms[0];//得到第一个表单
var Z = false;
var C = Y.getElementsByTagName("INPUT");//得到表单中的所有的input
for (var G = 0; G < C.length; G++) {
if (X == C[G].getAttribute("name")) {//循环匹配表单中的所有input,getAttribute("name")表示得到当前对象的name属性
Z = C[G];
return Z
} else {
Z = false
}
}
}
function L(X) {
var G = document.forms[0];//得到第一个表单
for (var C in X) {
if (C == "f")
{
if (O("f"))
{
if (O("f").id == "bdsug_ipt_f")
{
G.removeChild(I("bdsug_ipt_f"))
} else {
O("f").value = "8"
}
}
} else {
if (I("bdsug_ipt_" + C)) {
G.removeChild(I("bdsug_ipt_" + C))
}
}
}
}
//上面为帮助函数****************************************************** var A = 0;
//window.bdsug自己声明的对象
if (typeof window.bdsug != "object" || window.bdsug == null) {
window.bdsug = {}//重新初始化该对象
}
bdsug.sug = {};
bdsug.sugkeywatcher = {};
//声明J对象开始
var J = (function() {
function C(X)
{
var Z = this.__MSG_QS__;
if (!Z[X]) {
Z[X] = []
}
for (var Y = 1,b = arguments.length,a; Y < b; Y++) {
Z[X].push(arguments[Y])
}
}
function G(Z)
{
var Y = this.__MSG_QS__[Z.type];
if (Y == null) {
return
}
for (var X = 0,
a = Y.length; X < a; X++) {
Y[X].rm(Z)
}
}
return {
ini: function(X) { //声明一个函数,名称为ini
X.__MSG_QS__ = {}; //为传进来的对象添加属性
X.on = C; //为传进来的对象添加方法
X.dm = G; //为传进来的对象添加方法
return X
}
} //var J = (function() {
//return {
// zzl: function(X) {
// return ++X
// }
// }
//})();
//alert(J.zzl(7));//输出8 })();
//声明J对象结束
var M = navigator.userAgent.indexOf("MSIE") != -1 && !window.opera;//浏览器不是IE 同时不是opera[挪威浏览器] 返回true
var V = (document.compatMode == "BackCompat");//可以用来判断当前页面采用的渲染方式
alert('this browser is '+(M?'IE':'non-IE'));
alert('this browser version is IE5.5? '+V) ; function I(C) {//得到一个对象
return document.getElementById(C)
}
function K(C) {//创建一个对象
return document.createElement(C)
}
function S(C) {//消除输入字符串前后的半角和全角空格
return String(C).replace(new RegExp("(^[\\s\\t\\xa0\\u3000]+)|([\\u3000\\xa0\\s\\t]+\x24)", "g"), "")
}
function U(C) {
return String(C).replace(new RegExp("[\\s\\t\\xa0\\u3000]", "g"), "")
}
function P(X, G, C) {
if (M)
{
//ie浏览器下注册事件,attachEvent(事件类型, 处理函数);
X.attachEvent("on" + G,
(
function(Y)
{
return function()
{
C.call(Y)
}
}
)(X))
} else {
//非ie浏览器下注册事件,对应的函数是addEventListener(事件类型, 处理函数, 使用捕获);
X.addEventListener(G, C, false)
}
}
function N(C) {
if (M) {
//ie浏览器
C.returnValue = false
} else {
//非ie
C.preventDefault()//preventDefault方法就是可以阻止它的默认行为的发生而发生其他的事情。
}
}
function R(G) {
if (M)
{
//ie浏览器,为元素添加样式
var X = document.createStyleSheet();
X.cssText = G
} else {
//非ie
var C = document.createElement("style");
C.type = "text/css";
C.appendChild(document.createTextNode(G));
document.getElementsByTagName("HEAD")[0].appendChild(C)
}
}
function H(Y) {
var X = document.forms[0];
for (var G in Y) {
if (Y[G] == undefined) {
if (I("bdsug_ipt_" + G)) {
X.removeChild(I("bdsug_ipt_" + G))
}
} else {
if (!O(G)) {
X.appendChild(C(G, Y[G]))
} else {
O(G).value = Y[G]
}
}
}
function C(b, Z) {
var a = K("INPUT");
a.type = "hidden";
a.name = b;
a.id = "bdsug_ipt_" + b;
a.value = Z;
return a
}
}
function O(X) {//表单中input的name
var Y = document.forms[0];//得到第一个表单
var Z = false;
var C = Y.getElementsByTagName("INPUT");//得到表单中的所有的input
for (var G = 0; G < C.length; G++) {
if (X == C[G].getAttribute("name")) {//循环匹配表单中的所有input,getAttribute("name")表示得到当前对象的name属性
Z = C[G];
return Z
} else {
Z = false
}
}
}
function L(X) {
var G = document.forms[0];//得到第一个表单
for (var C in X) {
if (C == "f")
{
if (O("f"))
{
if (O("f").id == "bdsug_ipt_f")
{
G.removeChild(I("bdsug_ipt_f"))
} else {
O("f").value = "8"
}
}
} else {
if (I("bdsug_ipt_" + C)) {
G.removeChild(I("bdsug_ipt_" + C))
}
}
}
}
//上面为帮助函数****************************************************** var A = 0;
//window.bdsug自己声明的对象
if (typeof window.bdsug != "object" || window.bdsug == null) {
window.bdsug = {}//重新初始化该对象
}
bdsug.sug = {};
bdsug.sugkeywatcher = {};
//声明J对象开始
var J = (function() {
function C(X)
{
var Z = this.__MSG_QS__;
if (!Z[X]) {
Z[X] = []
}
for (var Y = 1,b = arguments.length,a; Y < b; Y++) {
Z[X].push(arguments[Y])
}
}
function G(Z)
{
var Y = this.__MSG_QS__[Z.type];
if (Y == null) {
return
}
for (var X = 0,
a = Y.length; X < a; X++) {
Y[X].rm(Z)
}
}
return {
ini: function(X) { //声明一个函数,名称为ini
X.__MSG_QS__ = {}; //为传进来的对象添加属性
X.on = C; //为传进来的对象添加方法
X.dm = G; //为传进来的对象添加方法
return X
}
} //var J = (function() {
//return {
// zzl: function(X) {
// return ++X
// }
// }
//})();
//alert(J.zzl(7));//输出8 })();
//声明J对象结束
解决方案 »
- JS在替换textarea内容时出现的问题,求解决
- javascript 高手进!!!
- 如何在span的title中输出km²,在线等!!!
- 高手帮我看看,我这种写法为何ie不兼容?
- 如果浏览器禁止了弹出窗口,怎么隐藏工具拦等?
- 怎样将一个table的最后n行删除?
- 谁会用javascript实现域名转向,并且在地址栏显示用户键入的地址
- 有没有这种"选择文件"的输入框:不是一个输入框旁边带一个"浏览"按钮的那种,是像VB里的那种,点击输入框后,这个"浏览"按钮才出现,不占
- 请教各位怎样去掉<textarea>里的scrollbar
- padding-left:100% 它参照的单位是多少
- 利用JavaScript,(jQuery)来写验证码
- 求解javascript,
var F = (function() {
var n = I("kw");//得到id为kw[搜索文本框]的对象
var e;
var b = 0;
var p = 0;
var g = "";
var m = "";
var h;
var Y = false;
var j = true;
var c;
var Z = I("su");//"百度一下"按钮对象
P(Z, "mousedown", l);//为文本框注册事件,l为"L",而不是"1"
P(Z, "keydown", l);//为文本框注册事件,l为"L",而不是"1"
P(I("kw"), "paste",
function() {
H({
rsv_n: 2
});
if (A == 0) {
A = new Date().getTime()
}
});
function l() {
H({
inputT: A > 0 ? (new Date().getTime() - A) : 0
})
}
function k() {
if (j) {
F.dm({
type: "start"
});
j = false
}
}
function f(q) {
if (A == 0) {
A = new Date().getTime()
}
if (j) {
F.dm({
type: "start"
});
j = false
}
q = q || window.event;
if (q.keyCode == 9 || q.keyCode == 27) {
F.dm({
type: "hide_div"
})
}
if (q.keyCode == 13) {
N(q);
F.dm({
type: "key_enter"
})
}
if (q.keyCode == 86 && q.ctrlKey) {
H({
rsv_n: 2
})
}
if (e.style.display != "none") {
if (q.keyCode == 38) {
N(q);
F.dm({
type: "key_up"
})
}
if (q.keyCode == 40) {
F.dm({
type: "key_down"
})
}
} else {
if (q.keyCode == 38 || q.keyCode == 40) {
F.dm({
type: "need_data",
wd: n.value
})
}
}
}
function X() {
var q = n.value;
if (q == g && q != "" && q != m && q != h) {
if (p == 0) {
p = setTimeout(function() {
F.dm({
type: "need_data",
wd: q
})
},
100)
}
} else {
clearTimeout(p);
p = 0;
g = q;
if (q == "") {
F.dm({
type: "hide_div"
})
}
if (m != n.value) {
m = ""
}
}
}
function G() {
b = setInterval(X, 10)
}
function d() {
clearInterval(b)
}
function a() {
if (Y) {
window.event.cancelBubble = true;
window.event.returnValue = false;
Y = false
}
}
function i(q) {
n.blur();
n.setAttribute("autocomplete", q);
n.focus()
}
function o(q) {
var q = q || window.event;
if (q.keyCode == 13) {
N(q)
}
}
n.setAttribute("autocomplete", "off");
var C = false;
bdsug.sugkeywatcher.on = function() { //为bdsug注册函数
if (!C) {
if (M) {
n.attachEvent("onkeydown", f)
} else {
n.addEventListener("keydown", f, false)
}
C = true
}
};
bdsug.sugkeywatcher.off = function() { //为bdsug注册函数
if (C) {
if (M) {
n.detachEvent("onkeydown", f)
} else {
n.removeEventListener("keydown", f, false)
}
C = false
}
};
bdsug.sugkeywatcher.on();
P(n, "mousedown", k);
P(n, "beforedeactivate", a);
if (window.opera) {
P(n, "keypress", o)
}
return J.ini({
rm: function(q) {
switch (q.type) {
case "div_ready":
e = q.sdiv;
m = n.value;
G();
break;
case "clk_submit":
d();
n.blur();
n.value = q.wd;
break;
case "ent_submit":
d();
n.blur();
break;
case "key_select":
h = q.selected;
break;
case "close":
d();
i("on");
break;
case "mousedown_tr":
if (navigator.userAgent.toLowerCase().indexOf("webkit") != -1) {
d();
setTimeout(G, 2000)
}
Y = true;
break
}
}
})
})();
//声明F对象结束
var W = (function() {
var d;
var k = I("kw");
var Z;
var h = -1;
var p;
var Y;
var G;
function X() {
var q = Z.rows;
for (var r = 0; r < q.length; r++) {
q[r].className = "ml"
}
}
function g() {
if (typeof(Z) != "undefined" && Z != null && d.style.display != "none") {
var q = Z.rows;
for (var r = 0; r < q.length; r++) {
if (q[r].className == "mo") {
return [r, q[r].cells[0].innerHTML]
}
}
}
return [ - 1, ""]
}
function c() {
if (M) {
G.style.display = "none"
}
d.style.display = "none"
}
function o() {
X();
this.className = "mo"
}
function j(q) {
W.dm({
type: "mousedown_tr"
});
if (!M) {
q.stopPropagation();
q.preventDefault();
return false
}
}
function i(r) {
var q = r;
return function() {
var s = p[q];
c();
W.dm({
type: "clk_submit",
oq: I("kw").value,
wd: s,
rsp: q
})
}
}
function f(q) {
q = q || window.event;
N(q);
W.dm({
type: "close"
});
c(); (new Image()).src = "http://sclick.baidu.com/w.gif?fm=suggestion&title=%B9%D8%B1%D5&t=" + new Date().getTime()
}
function n() {
var q = [k.offsetWidth + 15, k.offsetHeight + 10];
d.style.width = ((M && V) ? q[0] : q[0] - 2) + "px";
d.style.top = ((M && V) ? q[1] : q[1] - 1) + "px";
d.style.display = "block";
if (M) {
G.style.top = ((M && V) ? q[1] : q[1] - 1) + "px";
G.style.width = ((M && V) ? q[0] : q[0] - 2) + "px"
}
}
function m(s, t) {
if (s && t) {
var r = S(s);
if (t.indexOf(r) == 0) {
t = C(t, r)
} else {
if (t.indexOf(U(s)) == 0) {
r = U(s);
t = C(t, r)
} else {}
}
}
t = t.replace("&", "&");
return t
}
function C(u, s) {
var r = "<span>" + s + "</span>";
var q = s.length;
var t = "<b>" + u.substring(q) + "</b>";
return (r + t)
}
function b() {
Z = K("TABLE");
Z.id = "st";
Z.cellSpacing = 0;
Z.cellPadding = 2;
var s = K("tbody");
Z.appendChild(s);
for (var r = 0,
q = p.length; r < q; r++) {
var t = s.insertRow( - 1);
P(t, "mouseover", o);
P(t, "mouseout", X);
P(t, "mousedown", j);
P(t, "click", i(r));
var u = t.insertCell( - 1);
u.innerHTML = m(Y, p[r])
}
d.innerHTML = "";
d.appendChild(Z);
n();
if (M) {
G.style.display = "block";
G.style.left = 0 + "px";
G.style.top = k.offsetHeight + 15 + "px";
G.style.width = k.offsetWidth + "px";
G.style.height = d.offsetHeight - 1 + "px"
}
}
function l() {
h = g()[0];
if (h == -1) {
W.dm({
type: "submit"
})
} else {
W.dm({
type: "ent_submit",
oq: Y,
wd: g()[1],
rsp: h
})
}
}
function a() {
h = g()[0];
X();
if (h == 0) {
W.dm({
type: "key_select",
selected: ""
});
I("kw").value = Y;
h--;
L({
oq: Y,
sug: p[h],
rsv_n: 1,
rsp: h,
f: 3,
rsv_sug: rsv_sug
})
} else {
if (h == -1) {
h = p.length
}
h--;
var q = Z.rows[h];
q.className = "mo";
W.dm({
type: "key_select",
selected: p[h]
});
I("kw").value = p[h];
H({
oq: Y,
sug: p[h],
rsv_n: 1,
rsp: h,
f: 3,
rsv_sug: rsv_sug
})
}
}
function e() {
h = g()[0];
X();
if (h == p.length - 1) {
W.dm({
type: "key_select",
selected: ""
});
I("kw").value = Y;
h = -1;
L({
oq: Y,
sug: p[h],
rsv_n: 1,
rsp: h,
f: 3,
rsv_sug: rsv_sug
})
} else {
h++;
var q = Z.rows[h];
q.className = "mo";
W.dm({
type: "key_select",
selected: p[h]
});
I("kw").value = p[h];
H({
oq: Y,
sug: p[h],
rsv_n: 1,
rsp: h,
f: 3,
rsv_sug: rsv_sug
})
}
}
return J.ini({
rm: function(q) {
switch (q.type) {
case "div_ready":
d = q.sdiv;
G = q.frm;
break;
case "give_data":
Y = q.data.q;
p = q.data.s;
rsv_sug = q.data.t;
if (p.length != 0) {
b()
} else {
c()
}
break;
case "key_enter":
l();
break;
case "key_up":
a();
break;
case "key_down":
e();
break;
case "hide_div":
c();
break;
case "mousedown_other":
c();
break;
case "window_blur":
c();
break;
case "need_resize":
n();
break
}
}
})
})();
var T = (function() {
var C = document.forms[0];
function Y() {
if (I("bdsug_ipt_sug")) {
if (I("bdsug_ipt_sug").value == S(I("kw").value)) {
L({
rsv_n: 1,
sug: 1
})
} else {
L({
f: 1
})
}
}
}
P(C, "submit", Y);
function X() {
Y();
H({
inputT: A > 0 ? (new Date().getTime() - A) : 0
});
C.submit()
}
function G(Z) {
H(Z);
H({
inputT: A > 0 ? (new Date().getTime() - A) : 0
});
L({
sug: 1,
rsv_n: 1
});
C.submit()
}
return J.ini({
rm: function(Z) {
switch (Z.type) {
case "clk_submit":
G({
oq:
Z.oq,
rsp: Z.rsp,
f: 3,
rsv_sug: rsv_sug,
rsv_sug2: 1
});
break;
case "ent_submit":
G({
oq:
Z.oq,
rsp: Z.rsp,
f: 3,
rsv_sug: rsv_sug,
rsv_sug2: 0
});
break;
case "submit":
X();
break
}
}
})
})();
//声明T对象结束 //声明B对象开始
var B = (function() {
var C = {};
function X(Y) {
if (typeof C[Y] == "undefined") {
B.dm({
type: "request_data",
wd: Y
})
} else {
B.dm({
type: "give_data",
data: C[Y]
})
}
}
function G(Y) {
C[Y.q] = Y;
B.dm({
type: "give_data",
data: C[Y.q]
})
}
return J.ini({
rm: function(Y) {
switch (Y.type) {
case "response_data":
G(Y.data);
break;
case "need_data":
X(Y.wd);
break
}
}
})
})();
//声明B对象结束 //声明Q对象开始
var Q = (function() {
var C;
var G;
function X(Y) {
Q.dm({
type: "need_cookie"
});
if (C) {
document.body.removeChild(C)
}
C = K("SCRIPT");
C.src = "http://suggestion.baidu.com/su?wd=" + encodeURIComponent(Y) + "&p=" + G + "&cb=window.bdsug.sug&t=" + (new Date()).getTime();
//window.bdsug.sug({q:"d",p:true,s:["dnf","dnf官网","dota","dota视频","dj","dream high2","dota英雄出装","dnf70级加点模拟器","dnf双开","dj舞曲"]});
C.charset = "gb2312";
document.body.appendChild(C)
}
return J.ini({
rm: function(Z) {
switch (Z.type) {
case "request_data":
X(Z.wd);
break;
case "give_cookie":
var Y = Z.sug;
if (Y > 0) {
Y = 3
}
G = Y;
break
}
}
})
})();
//声明Q对象结束
bdsug.sug = function(C) {
bdsug.dm({
type: "response_data",
data: C
})
};
bdsug.initSug = function() {
bdsug.dm({
type: "init"
})
};
J.ini(bdsug); //声明E对象开始
var E = (function() {
function C() {
if (navigator.cookieEnabled) {
document.cookie = "su=0; domain=www.baidu.com"
}
}
function G() {
var X = (navigator.cookieEnabled && /sug=(\d)/.test(document.cookie) ? RegExp.$1: 3);
E.dm({
type: "give_cookie",
sug: X
})
}
return J.ini({
rm: function(X) {
switch (X.type) {
case "close":
C();
break;
case "need_cookie":
G();
break
}
}
})
})();
//声明E对象结束
//声明D对象开始
var D = (function() {
var c = I("kw");
var X;
var Z = document.forms[0];
var d;
function b() {
if (X.offsetWidth != 0 && c.offsetWidth != X.offsetWidth) {
D.dm({
type: "need_resize"
})
}
}
function Y() {
X = K("DIV");
X.id = "sd_" + new Date().getTime();
X.style.display = "none";
Z.appendChild(X);
if (M) {
d = K("IFRAME");
d.style.display = "none";
d.style.position = "absolute";
X.parentNode.insertBefore(d, X)
}
}
function a(f) {
f = f || window.event;
var g = f.target || f.srcElement;
if (g == c) {
return
}
while (g = g.parentNode) {
if (g == X) {
return
}
}
D.dm({
type: "mousedown_other"
})
}
function C() {
D.dm({
type: "window_blur"
})
}
function G() {
var f = "#" + X.id;
var e = [];
D.dm({
type: "div_ready",
sdiv: X,
frm: d
});
setInterval(b, 100);
P(document, "mousedown", a);
P(window, "blur", C);
e.push(f + "{border:1px solid #817F82;position:absolute;top:32px;left:0}");
e.push(f + " table{width:100%;background:#fff;cursor:default}");
e.push(f + " td{color:#000;font:14px arial;height:25px;line-height:25px;padding:0 8px}");
e.push(f + " td b{color:#000}");
e.push(f + " .mo{background:#ebebeb}");
e.push(f + " .ml{background:#fff}");
R(e.join(""))
}
bdsug.sug.initial = G;
return J.ini({
rm: function(e) {
switch (e.type) {
case "start":
G();
break;
case "init":
Y();
break
}
}
})
})();
//声明D对象结束
F.on("need_data", B);
F.on("close_div", W);
F.on("key_enter", W);
F.on("key_up", W);
F.on("key_down", W);
F.on("hide_div", W);
F.on("start", D);
B.on("request_data", Q);
B.on("give_data", W);
bdsug.on("response_data", B);
bdsug.on("init", D);
W.on("clk_submit", F, T);
W.on("ent_submit", F, T);
W.on("submit", T);
W.on("key_select", F);
W.on("close", F, E);
W.on("mousedown_tr", F);
D.on("mousedown_other", W);
D.on("need_resize", W);
D.on("div_ready", F, W);
D.on("window_blur", W);
Q.on("need_cookie", E);
E.on("give_cookie", Q);
window.bdsug.initSug()
})();谁能帮我分析一下上面的js脚本,越详细越好,还有就是
F.on()
B.on()
....
这个on函数哪里来的,一直找不到,同事说继承了其他类,可是我不是很信.
if (!p) {
if (M) {
X.attachEvent("onkeydown", f)
} else {
X.addEventListener("keydown", f, false)
}
p = true
}
};
return {
ini: function(X) { //声明一个函数,名称为ini
X.__MSG_QS__ = {}; //为传进来的对象添加属性
X.on = C; //为传进来的对象添加方法
X.dm = G; //为传进来的对象添加方法
return X
}
}
on 是绑定事件,这是压缩后的代码,变量名全是一个字母,大概知道就可以了