http://blog.notdot.net/2010/01/Writing-your-own-webapp-framework-for-App-Engine
Ну раз сделал блог надо что-нибудь написать.
Приведу пример того что получилось. Это фактически то, что хотелось очень давно без всякого jquer-евского бреда и нагромождения, дальше будет больше...
Всё с комментами
001 | function $$(id) // Упрощение доступа к элементу |
002 | { |
003 | return document.getElementById(id); |
004 | } |
005 | |
006 | function $(id) |
007 | { |
008 | return new $.any(id); |
009 | } |
010 |
011 | $.alert = function (data) // Вывести алерт Пример: $.alert('Привет'); |
012 | { |
013 | var id= this .id; |
014 | alert(data) |
015 | return this ; |
016 | }; |
017 | |
018 | $.any = function (id) |
019 | { |
020 | this .id = id; |
021 | }; |
022 | |
023 | $.any.prototype = $.prototype; |
024 |
025 | $.prototype.text = function (data) // Вставка текста в область элемента |
026 | { // Пример: $('work').text('Привет'); |
027 | var id= this .id; |
028 | $$(id).innerHTML=data; |
029 | return this ; |
030 | } |
031 |
032 | $.prototype.css = function (property,data) // Задание css свойству значения Пример: $('div1').css('border','1px solid #888888'); |
033 | { |
034 | var id= this .id; |
035 | $$(id).style[property]=data; |
036 | return this ; |
037 | } |
038 |
039 | $.prototype.load = function (data) // Ajax загрузка |
040 | { // Пример: $('work').load('data/program/main.php'); |
041 | var id= this .id; |
042 | var xml; |
043 |
044 | if (window.ActiveXObject) |
045 | { |
046 | try |
047 | { |
048 | xml= new ActiveXObject( "Microsoft.XMLHTTP" ); |
049 | } |
050 | catch (e) |
051 | { |
052 | xml= false ; |
053 | } |
054 | } |
055 | else |
056 | { |
057 | try |
058 | { |
059 | xml= new XMLHttpRequest(); |
060 | } |
061 | catch (e) |
062 | { |
063 | xml= false ; |
064 | } |
065 | } |
066 |
067 | if (!xml) alert( "Error creating the XMLHttpRequest object" ); |
068 |
069 | |
070 | xml.onreadystatechange = function () |
071 | { |
072 | if (xml.readyState != 4 || xml.readyState==0) |
073 | { |
074 | $$(id).innerHTML= " <img src='/img/pb.gif'> " ; |
075 | } |
076 | if (xml.readyState == 4) |
077 | { |
078 | if (xml.status == 200) |
079 | { |
080 | $(id).text(xml.responseText); |
081 | } |
082 | else |
083 | { |
084 | $(id).text( "Error: returned status code " + xml.status + " " + xml.statusText); |
085 | } |
086 | } |
087 | }; |
088 | xml.open( "GET" , data, true ); |
089 | xml.send( null ); |
090 | return this ; |
091 | } |
092 |
093 | $.prototype.img = function (src) // Вставить картинку в текстовую область Пример: $('work').img('img/pb.gif'); |
094 | { |
095 | var id= this .id; |
096 | var sorce= "<img src='" +src+ "'>" ; |
097 | $$(id).innerHTML=source; |
098 | |
099 | return this ; |
100 | } |
101 |
102 | $.prototype.show = function () // Показать элемент Пример: $('leftmenu').show(); |
103 | { |
104 | var id = this .id; |
105 | $(id).css( 'display' , 'table' ); |
106 | return this ; |
107 | } |
108 |
109 | $.prototype.hide = function () // Скрыть элемент Пример: $('leftmenu').hide(); |
110 | { |
111 | var id = this .id; |
112 | $(id).css( 'display' , 'none' ); |
113 |
114 | return this ; |
115 | } |
116 |
117 | $.prototype.сlass = function (name) // Задать имя класса |
118 | { // Пример: $('div1').class('picked'); |
119 | var id = this .id; |
120 | $$(id).className=name; |
121 |
122 | return this ; |
123 | } |
124 |
125 | $.prototype.opacity = function (value) // Изменение прозрачности от 0 до 100 |
126 | { //Пример: $('imglogo').opacity(50); |
127 | var id = this .id; |
128 | $(id).css( 'opacity' ,value/100); |
129 | $(id).css( 'filter' , 'alpha(opacity=' +value+ ')' ); |
130 | return this ; |
131 | } |
132 |
133 | $.prototype.position = function (x,y,type) // Устанавливаем позицию элемента |
134 | { // type :absolute | fixed | relative | static Пример:$('imglogo').position(100,100,'absolute'); |
135 | var id = this .id; |
136 | $(id).css( 'position' ,type); |
137 | $(id).css( 'left' ,x); |
138 | $(id).css( 'top' ,y); |
139 | |
140 | return this ; |
141 | } |
Комментариев нет:
Отправить комментарий