A5下载 - 努力做内容最丰富最安全的下载站!

A5站长下载站

当前位置:A5下载 > 编程开发 > 网站开发 > JavaScript实现的浮动层框架用法实例分析

JavaScript实现的浮动层框架用法实例分析

时间:2015-10-12 17:22作者:yezheng人气:39

本文实例讲述了JavaScript实现的浮动层框架用法。分享给大家供大家参考。具体如下:

这是一个JavaScript编写的浮动层框架,作为框架来说,骨干已经完成了。可以实现“类”、“构造函数”、“继承”(木有实现多继承)、“静态方法”、“重载”(木有实现多态),对我来说主要的意义就是,我喜欢这种代码风格,可以非常简单的重用和二次开发。

运行效果截图如下:

JavaScript实现的浮动层框架用法实例分析

 具体代码如下:

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<title>Hutia Javascript Framework</title>

<script>

function ClassAdapter(a) {

var d, c = a || new Function, b = void 0, f = Math.random();

d = function(b) {

this.constructor = c;

this["class"] = d;

for(var a in e) {

this[a] = e[a]

}

var f;

b != "<!-- /* n@o!t#h$i(n&g1 4l5i7k9e24- th69at9 - hutia */ -->" && (f = c.apply(this, arguments));

f = f || this;

if(f != this) {

for(a in this) {

f[a] = this[a]

}

f.constructor = c

}

return f

};

var e = {su:function() {

var b = this["class"].get_parent();

if(!b) {

return null

}

this.su = function(a) {

return b.prototype[a].apply(this, Array.prototype.slice.apply(arguments).slice(1))

};

return b.get_constructor().apply(this, arguments)

}, get_class:function() {

return this["class"]

}, same_instanceof:function(b, a) {

if(!b || !b.get_class) {

return!1

}

return this["class"][a ? "equals" : "is_descent"](b.get_class())

}, is_instanceof:function(b, a) {

return this["class"][a ? "equals" : "is_descent"](b)

}, trace:function(b) {

if(typeof window == "undefined") {

return this.out(b && b.description || b)

}

if(!window.__log__) {

window.__log__ = []

}

window.__log__.push(b && b.description || b)

}, out:function(b) {

typeof alert != "undefined" ? alert(b) : typeof WScript != "undefined" && WScript.Echo(b)

}}, a = {is_class:!0, extend:function(b) {

b = new ClassAdapter(b || c);

b.set_parent(d);

b.prototype = new d("<!-- /* n@o!t#h$i(n&g1 4l5i7k9e24- th69at9 - hutia */ -->");

return b

}, equals:function(b) {

if(!b || !b.is_class) {

return!1

}

return f == b.get_clsid()

}, is_descent:function(a) {

if(!a || !a.is_class) {

return!1

}

if(f == a.get_clsid()) {

return!0

}

for(var c = b;c;) {

if(c.equals(a)) {

return!0

}

c = c.get_parent()

}

return!1

}, is_instance:function(b, a) {

return b && b.is_instanceof ? b.is_instanceof(this, a) : !1

}, method:function(b, a) {

if(arguments.length == 1) {

for(var c in b) {

d.prototype[c] = b[c]

}

}else {

d.prototype[b] = a

}

return d

}, _default:function(b, a) {

if(arguments.length == 1) {

for(var c in b) {

d.prototype[c] = b[c]

}

}else {

d.prototype[b] = a

}

return d

}, _statics:function(b, a) {

if(arguments.length == 1) {

for(var c in b) {

d[c] = b[c]

}

}else {

d[b] = a

}

return d

}, get_constructor:function() {

return c

}, set_constructor:function(b) {

c = b

}, get_parent:function() {

return b

}, set_parent:function(a) {

b = a

}, get_clsid:function() {

return f

}, toString:function() {

return String(c)

}, valueOf:function() {

return String(c)

}};

d.prototype = e;

for(var h in a) {

d[h] = a[h]

}

return d

}

function Class(a) {

function d() {

if(++a.err_count > a.max_err) {

var b;

a.onerror && (b = a.onerror());

return b

}

a.recall_timer = setTimeout(function() {

Class(a)

}, a.retry_interval || 100)

}

if(!a) {

return new ClassAdapter

}

var c;

c = void 0;

if(!Class.hash_list) {

Class.hash_list = {}

}

a.namespace = a.namespace || window;

a.err_count |= 0;

a.max_err = a.max_err || 5;

a.name = a.name || "$" + (new Date).getTime().toString(36) + (Math.random() * 16777215 | 0).toString(36);

a.recall_timer = null;

Class.hash_list[a.name] = a;

if(a.requires) {

if(typeof a.requires == "string") {

a.requires = [a.requires]

}

for(var b in a.requires) {

if("undefined" == typeof a.namespace[a.requires[b]]) {

return d()

}

}

}

if(a.parent) {

if("undefined" == typeof a.namespace[a.parent]) {

return d()

}

a.parent = a.namespace[a.parent]

}

if(typeof a == "function") {

c = a

}else {

if(a.init) {

c = a.init

}

}

c = a.parent ? a.parent.extend(c) : new ClassAdapter(c);

a.method && c.method(a.method);

a._default && c._default(a._default);

a._statics && c._statics(a._statics);

a.namespace[a.name] = c;

a.ready && a.ready()

}

Class.is_ready = function(a) {

if(Class.hash_list && Class.hash_list[a] && !Class.hash_list[a].recall_timer) {

return!0

}

return!1

};

Class.ready = function(a, d, c) {

function b() {

var c = !0;

if(d) {

for(var f in d) {

if(!Class.hash_list[d[f]] || Class.hash_list[d[f]].recall_timer) {

c = !1;

break

}

}

}else {

for(f in Class.hash_list) {

if(Class.hash_list[f].recall_timer) {

c = !1;

break

}

}

}

if(!c) {

return setTimeout(b, 10)

}

a()

}

var f;

typeof d == "string" && (d = [d]);

c ? (f = window.onload, window.onload = function() {

setTimeout(b, 1);

typeof f == "function" && f()

}) : setTimeout(b, 1)

};

(function() {

Class({name:"SingleHash", init:function() {

this.data = {}

}, method:{add:function(a) {

this.data[a] = a;

return this

}, remove:function(a) {

delete this.data[a];

return this

}, each:function(a) {

for(var d in this.data) {

a(this.data[d])

}

}, invoke:function(a) {

var d = Array.prototype.slice.call(arguments, 1), c = void 0, b;

for(b in this.data) {

typeof this.data[b] == "function" && (c = this.data[b].apply(a || this, d))
}

return c

}, clear:function() {

this.data = {}

}, contains:function(a) {

return!!this.data[a]

}}})

})();

(function() {

Class({parent:"SingleHash", name:"Event", init:function(a) {

var d = function(c) {

return d.invoke(a || this, c)

};

d.data = {};

return d

}})

})();

(function() {

Class({parent:"HTML", name:"Stylesheet", init:function(a) {

if(a != "-=^&%$#$") {

var d = HTML.create("style", new Stylesheet("-=^&%$#$"), "Stylesheet#", !0);

d.set(a);

return d

}

}, method:{index_of:function(a) {

for(var d = 0;d < this.rules.length;d++) {

if(this.rules[d].selectorText == a) {

return d

}

}

return-1

}, remove:function(a) {

typeof a != "number" && (a = this.index_of(a));

a = parseInt(a);

!isNaN(a) && a > -1 && a < this.rules.length && (this._sheet.removeRule ? this._sheet.removeRule(a) : this._sheet.deleteRule(a));

return this

}, add:function(a, d) {

var c = this.rules.length;

this._sheet.insertRule ? this._sheet.insertRule(a + "{" + d + "}", c) : this._sheet.addRule(a, d, c);

return this

}, set:function(a, d) {

if(arguments.length == 1) {

for(var c in a) {

this.set(c, a[c])

}

return this

}

var b = this.index_of(a);

if(b == -1) {

return this.add(a, d)

}

if(typeof d == "string") {

this.rules[b].style.cssText = d

}else {

for(c in d) {

this.rules[b].style[c] = d[c]

}

}

return this

}, get:function(a, d) {

if(arguments.length == 0) {

for(var c = [], b = 0;b < this.rules.length;b++) {

c.push(this.rules[b].selectorText + "{ " + this.rules[b].style.cssText + " }")

}

return c

}

b = this.index_of(a);

if(this.rules[b]) {

return d ? this.rules[b].style[d] : this.rules[b].style.cssText

}

}}, ready:function() {

var a = HTML._create("style", new Stylesheet("-=^&%$#$"), "Stylesheet#");

document.getElementsByTagName("head")[0].appendChild(a);

a._sheet = a.styleSheet || a.sheet;

a.rules = a._sheet.cssRules || a._sheet.rules

}})

})();

(function() {

function a(b, a, e, h) {

var e = e || "#", b = String(b).toLowerCase(), g;

c[e + b] ? g = h ? c[e + b] : c[e + b].cloneNode(!0) : c[e + b] = g = document.createElement(b);

if(!g.proto || !g.proto.same_instanceof(a)) {

g.proto = a, d(g)

}

return g

}

function d(b) {

for(var a in b.proto) {

b[a] = b.proto[a]

}

}

var c = {};

Class({name:"HTML", init:function(b) {

if(b) {

return a(b, new HTML)

}

}, requires:["Event"], _statics:{_create:function(b, a, e, h) {

var e = e || "#", b = String(b).toLowerCase(), g = document.createElement(b);

if(h) {

for(var i in h.attr) {

g[i] = h.attr[i]

}

}

if(h) {

for(i in h.style) {

g.style[i] = h.style[i]

}

}

g.proto = a;

d(g);

c[e + b] = g;

h && typeof h.ready == "function" && h.ready.apply(g);

return g

}, create:a, enhance:function(b, a) {

a = a || new HTML;

if(!b.proto || !b.proto.same_instanceof(a)) {

b.proto = a, d(b)

}

return b

}, link:d, cancel_event:function(b) {

b = b || window.event;

b.returnValue = !1;

b.cancelBubble = !0;

b.preventDefault && b.preventDefault();

b.stopPropagation && b.stopPropagation();

return!1

}}, method:{$style:function(b) {


var a = window.getComputedStyle && window.getComputedStyle(this, null) || this.currentStyle;


return b && a[b] || a

}, add_class:function(b) {

this.has_class(b) || (this.className += " " + b);

return this

}, has_class:function(b) {

return RegExp("b" + b.replace(/(W)/g, "$1") + "b").test(this.className)

}, remove_class:function(b) {

this.className = this.className.replace(RegExp("b" + b.replace(/(W)/g, "$1") + "b", "g"), "").replace(/s+/g, " ");

return this

}, toggle_class:function(b, a) {

this.has_class(b) ? (this.remove_class(b), a && this.add_class(a)) : (this.add_class(b), a && this.remove_class(a))

}, hover_class:function(b, a) {

this.bind("onmouseover", function() {

this.add_class(b);

a && this.remove_class(a)

});

this.bind("onmouseout", function() {

a && this.add_class(a);

this.remove_class(b)

})

}, hide:function() {

this.style.display = "none";

return this

}, show:function(b) {

this.style.display = b || "";

return this

}, bind:function(b, a) {

if(!Event.is_instance(this[b])) {

var c = this[b];

this[b] = new Event;

this[b].add(c)

}

this[b].contains(a) || this[b].add(a);

return this

}, unbind:function(b, a) {

if(!Event.is_instance(this[b])) {

var c = this[b];

this[b] = new Event;

this[b].add(c)

}

this[b].remove(a);

return this

}, fire:function(b) {

if(typeof this[b] == "function") {

return this[b].apply(this, Array.prototype.slice.call(arguments, 1))

}

}, css:function(b, a) {

if(typeof b == "string") {

this.style.cssText = a ? this.style.cssText + b : b

}else {

for(var c in b) {

this.style[c] = b[c]

}

}

return this

}, session:function(b, a) {

function c(b) {

var b = RegExp(";s*" + escape(b) + "=([^;]+)", "i"), a = ";" + String(document.cookie || "");

return b.test(a) ? unescape(a.match(b)[1]) : ""

}

function d(b, a) {

var c = new Date;

c.setYear(c.getYear() + 10);

document.cookie = escape(b) + "=" + escape(a) + ";expires=" + c.toUTCString() + ";"

}

if(arguments.length == 1) {

return c(b)

}else {

d(b, a)

}

}, $width:function(b) {

if(typeof b == "number" && b >= 0) {

this.style.width = b - this.offsetWidth + this.$width() + "px"

}else {

b = this.offsetWidth;

if(b === 0) {

return 0

}

return b - (parseFloat(this.$style("borderLeftWidth")) || 0) - (parseFloat(this.$style("borderRightWidth")) || 0) - (parseFloat(this.$style("paddingLeft")) || 0) - (parseFloat(this.$style("paddingRight")) || 0)

}

}, $height:function(b) {

if(typeof b == "number" && b >= 0) {

this.style.height = b - this.offsetHeight + this.$height() + "px"

}else {

b = this.offsetHeight;

if(b === 0) {

return 0

}

return b - (parseFloat(this.$style("borderTopWidth")) || 0) - (parseFloat(this.$style("borderBottomWidth")) || 0) - (parseFloat(this.$style("paddingTop")) || 0) - (parseFloat(this.$style("paddingBottom")) || 0)

}

}}})

})();

(function() {

Class({name:"DragHandle", parent:"HTML", method:{unselectable:"on", can_drag:!0, bind_drag_target:function(a) {

this.drag_target = a;

return this

}, onmousedown:function(a) {

function d(a) {

a = a || window.event;

b.move_to([a.clientX - f, a.clientY - e])

}

function c() {

document.unbind("onmousemove", d).unbind("onmouseup", c)

}

a = a || window.event;

if(this.can_drag && this.drag_target) {

var b = this.drag_target, f = a.clientX - b.offsetLeft, e = a.clientY - b.offsetTop;

document.bind("onmousemove", d).bind("onmouseup", c)

}

}}, ready:function() {

HTML.enhance(document)

}})

})();

(function() {

var a = "-=^&%$#$" + Math.random() + (new Date).getTime(), d = 100;

Class({name:"WinButton", parent:"HTML", init:function(c, b, d) {

if(c != a) {

var e = HTML.create("a", new WinButton(a), "WinButton#");

e.innerHTML = c;

e.bind("onclick", function() {

d.apply(b)

});

return e

}

}, method:{unselectable:"on", href:"javascript:void(0);", target:"_self"}, ready:function() {

HTML._create("a", new WinButton(a), "WinButton#", {attr:{className:"win_button"}})

}});

Class({name:"WinCaptionTitle", parent:"HTML", init:function(c) {

if(c != a) {

return HTML.create("div", new WinCaptionTitle(a), "WinCaptionTitle#")

}

}, method:{unselectable:"on"}, ready:function() {

HTML._create("div", new WinCaptionTitle(a), "WinCaptionTitle#", {attr:{className:"win_caption_title"}})

}});

Class({name:"WinCaption", parent:"DragHandle", requires:["WinCaptionTitle", "WinButton"], init:function(c) {

if(c != a) {

var b = HTML.create("div", new WinCaption(a), "WinCaption#");

b.appendChild(new WinButton("[X]", c, function() {

this.close()

}));

b.appendChild(b.$title = new WinCaptionTitle);

return b

}

}, method:{unselectable:"on"}, ready:function() {

HTML._create("div", new WinCaption(a), "WinCaption#", {attr:{className:"win_caption"}})

}});

Class({name:"WinButtonBar", parent:"HTML", requires:["Stylesheet", "WinButton"], init:function(c, b) {

if(c != a) {

var d = HTML.create("div", new WinButtonBar(a), "WinButtonBar#");

if(b) {

for(var e in b) {

d.appendChild(new WinButton(e, c, b[e]))

}

}else {

d.hide()

}

return d

}

}, method:{unselectable:"on"}, ready:function() {

HTML._create("div", new WinButtonBar(a), "WinButtonBar#", {attr:{className:"win_button_bar"}})

}});

Class({name:"WinBody", parent:"HTML", requires:["Stylesheet"], init:function(c) {

if(c != a) {

return HTML.create("div", new WinBody(a), "WinBody#")

}

}, method:{unselectable:"on"}, ready:function() {

HTML._create("div", new WinBody(a), "WinBody#", {attr:{className:"win_body"}})

}});

Class({name:"WinBorder", parent:"HTML", requires:["Stylesheet"], init:function(c) {

if(c != a) {

return HTML.create("div", new WinBorder(a), "WinBorder#")

}

}, method:{unselectable:"on"}, ready:function() {

HTML._create("div", new WinBorder(a), "WinBorder#", {attr:{className:"win_border"}})

}});

Class({name:"Win", parent:"HTML", requires:["Stylesheet", "WinCaption", "WinBody", "WinBorder"], init:function(c) {

if(c != a) {

var b = HTML.create("div", new Win(a), "Win#");

b.appendChild(b.border = new WinBorder(b));

b.appendChild(b.caption = new WinCaption(b));

b.appendChild(b.body = new WinBody(b));

b.appendChild(b.button_bar = new WinButtonBar(b, c.buttons));

b.caption.bind_drag_target(b);

if(c) {

b.data = c, b.set_title(c.title)

}

return b

}

}, method:{unselectable:"on", type:"win", onmousedown:function() {

this.style.zIndex = d++

}, open:function() {

var a = this.data || {};

document.body.appendChild(this);

this.show();

a.size && this.set_size(a.size);

a.pos ? this.move_to(a.pos) : this.auto_center();

this.style.zIndex = d++;

this.fire("onopen")

}, close:function() {

this.hide();

this.fire("onclose")

}, set_size:function(a) {

this.$width(a[0]);

this.$height(a[1]);

this.border.$width(a[0]);

this.border.$height(a[1]);

this.body.$width(this.$width());

this.body.$height(this.$height() - this.caption.offsetHeight - this.button_bar.offsetHeight)

}, set_title:function(a) {

this.caption.$title.innerHTML = a || "Untitled Window"

}, move_to:function(a) {

this.style.left = a[0] + "px";

this.style.top = a[1] + "px"

}, auto_center:function() {

var a = window.innerHeight || document.documentElement.clientHeight;

this.move_to([((window.innerWidth || document.documentElement.clientWidth) - this.$width()) / 2, (a - this.$height()) / 2])

}}, ready:function() {

new Stylesheet({".win":"position:absolute; float:left; display:block; padding:0px 5px 5px 5px; -moz-user-select:none; user-select:none; -webkit-user-select:none;", ".win_border":"position:absolute; left:0px; top:0px; float:left; display:block; border:1px solid black; background-color:#888888; opacity:0.7; filter:alpha(opacity=70); -moz-border-radius:5px; -khtml-border-radius:5px; -webkit-border-radius:5px; border-radius: 5px;", ".win_button":"color:navy; font-size:12px; text-decoration:none;",

".win_button:hover":"color:white; text-decoration:none;", ".win_button_bar":"position:relative; width:100%; line-height:30px; font-size:14px; text-align:center;", ".win_button_bar .win_button":"margin:5px 10px 0px 0px; padding:0px 10px; line-height:24px; background-color:silver; display:inline; zoom:1; display:inline-block;", ".win_caption":"position:relative; width:100%; line-height:30px; font-size:14px; cursor:pointer;", ".win_caption_title":"font-weight:bold; color:white;", ".win_caption .win_button":"float:right;",

".win_body":"position:relative; overflow:auto; width:100%; height:auto; background-color:white;"});

HTML._create("div", new Win(a), "Win#", {attr:{className:"win"}})

}})

})();

Class.ready(function() {

var a = new Win({size:[400, 300], pos:[220, 220], buttons:{OK:function() {

this.close()

}, Cancel:function() {

this.close()

}}});

(new Win({size:[400, 300], pos:[20, 20], title:"Untitled Window 2"})).open();

(new Win({size:[400, 300], pos:[440, 20], title:"Untitled Window 3"})).open();

(new Win({size:[400, 300], pos:[20, 340], title:"Untitled Window 4"})).open();

a.open()

}, null, !0);

</script>

</head>

<body>

</body>

</html>

希望本文所述对大家的JavaScript程序设计有所帮助。

标签JavaScript,实现,浮动,框架,用法,实例分析,本文

相关下载

查看所有评论+

网友评论

网友
您的评论需要经过审核才能显示

公众号