Благодарим за выбор нашего сервиса!
Тестовое сообщение
Сообщений 1 страница 30 из 32
Поделиться22012-03-07 05:16:06
[yandx][yandx][yandx][yandx][yandx][yandx][yandx][yandx][yandx][yandx][yandx][yandx][yandx][yandx][yandx][yandx][ya[yandx][yandx][yandx][yandx][yandx][yandx][yandx][yandx][yandx][yandx][yandx][yandx][yandx][/yandx][/yandx][/yandx][/yandx][/yandx][/yandx][/yandx][/yandx][/yandx][/yandx][/yandx][/yandx][/yandx]ndx][yandx][/yandx][/yandx][/yandx][/yandx][/yandx][/yandx][/yandx][/yandx][/yandx][/yandx][/yandx][/yandx][/yandx][/yandx][/yandx][/yandx][/yandx][/yandx]
Поделиться52012-03-07 20:01:41
траливали
Поделиться62012-03-08 08:14:40
[mod]fffffffffffff[/mod]
[ex]fffffffffffff[/ex]
Поделиться72012-03-08 08:20:32
bbbbbbbb
Поделиться82012-03-08 11:12:13
пппппппппппппп
Поделиться122012-03-09 15:28:07
[audio]http://bbbbbb.mp3[/audio]
Поделиться132012-03-09 19:28:30
Javascript How To
Тонкости работы в Javascript, интересные алгоритмы, а также ответы на часто задаваемые вопросы по Javascript.
Перебор ассоциативных массивов
16.04.2009 от dimohaДля перебора ассоциативных массивов в Javascript удобнее всего использовать конструкцию for … var … in. Например,
for (var i in Arr)
{
alert('Arr[i] = ' + Arr[i]);
}См. также:
Как быстро проверить включена ли в браузере графика?
Как проверить включены ли cookie в браузере?
Быстрая вставка элементов в DOM из JavascriptРубрики: Разное | Комментариев нет »
MD4 в Javascript
16.04.2009 от dimohaНабрел на библиотеку с реализацией MD4 в Javascript. Несмотря на то, что MD4 практически нигде не используется, все же иногда для совместимости с другими приложениями он требуется.
/*
* A JavaScript implementation of the RSA Data Security, Inc. MD4 Message
* Digest Algorithm, as defined in RFC 1320.
* Version 2.1 Copyright (C) Jerrad Pierce, Paul Johnston 1999 - 2002.
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
* Distributed under the BSD License
* See http://pajhome.org.uk/crypt/md5 for more info.
*//*
* Configurable variables. You may need to tweak these to be compatible with
* the server-side, but the defaults work in most cases.
*/
var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode *//*
* These are the functions you'll usually want to call
*/
function hex_md4(s){ return binl2hex(core_md4(str2binl(s), s.length * chrsz));}
function b64_md4(s){ return binl2b64(core_md4(str2binl(s), s.length * chrsz));}
function str_md4(s){ return binl2str(core_md4(str2binl(s), s.length * chrsz));}
function hex_hmac_md4(key, data) { return binl2hex(core_hmac_md4(key, data)); }
function b64_hmac_md4(key, data) { return binl2b64(core_hmac_md4(key, data)); }
function str_hmac_md4(key, data) { return binl2str(core_hmac_md4(key, data)); }/*
* Perform a simple self-test to see if the VM is working
*/
function md4_vm_test()
{
return hex_md4("abc") == "a448017aaf21d8525fc10ae87aa6729d";
}/*
* Calculate the MD4 of an array of little-endian words, and a bit length
*/
function core_md4(x, len)
{
/* append padding */
x[len >> 5] |= 0x80 << (len % 32);
x[(((len + 64) >>> 9) << 4) + 14] = len;var a = 1732584193;
var b = -271733879;
var c = -1732584194;
var d = 271733878;for(var i = 0; i < x.length; i += 16)
{
var olda = a;
var oldb = b;
var oldc = c;
var oldd = d;a = md4_ff(a, b, c, d, x[i+ 0], 3 );
d = md4_ff(d, a, b, c, x[i+ 1], 7 );
c = md4_ff(c, d, a, b, x[i+ 2], 11);
b = md4_ff(b, c, d, a, x[i+ 3], 19);
a = md4_ff(a, b, c, d, x[i+ 4], 3 );
d = md4_ff(d, a, b, c, x[i+ 5], 7 );
c = md4_ff(c, d, a, b, x[i+ 6], 11);
b = md4_ff(b, c, d, a, x[i+ 7], 19);
a = md4_ff(a, b, c, d, x[i+ 8], 3 );
d = md4_ff(d, a, b, c, x[i+ 9], 7 );
c = md4_ff(c, d, a, b, x[i+10], 11);
b = md4_ff(b, c, d, a, x[i+11], 19);
a = md4_ff(a, b, c, d, x[i+12], 3 );
d = md4_ff(d, a, b, c, x[i+13], 7 );
c = md4_ff(c, d, a, b, x[i+14], 11);
b = md4_ff(b, c, d, a, x[i+15], 19);a = md4_gg(a, b, c, d, x[i+ 0], 3 );
d = md4_gg(d, a, b, c, x[i+ 4], 5 );
c = md4_gg(c, d, a, b, x[i+ 8], 9 );
b = md4_gg(b, c, d, a, x[i+12], 13);
a = md4_gg(a, b, c, d, x[i+ 1], 3 );
d = md4_gg(d, a, b, c, x[i+ 5], 5 );
c = md4_gg(c, d, a, b, x[i+ 9], 9 );
b = md4_gg(b, c, d, a, x[i+13], 13);
a = md4_gg(a, b, c, d, x[i+ 2], 3 );
d = md4_gg(d, a, b, c, x[i+ 6], 5 );
c = md4_gg(c, d, a, b, x[i+10], 9 );
b = md4_gg(b, c, d, a, x[i+14], 13);
a = md4_gg(a, b, c, d, x[i+ 3], 3 );
d = md4_gg(d, a, b, c, x[i+ 7], 5 );
c = md4_gg(c, d, a, b, x[i+11], 9 );
b = md4_gg(b, c, d, a, x[i+15], 13);a = md4_hh(a, b, c, d, x[i+ 0], 3 );
d = md4_hh(d, a, b, c, x[i+ 8], 9 );
c = md4_hh(c, d, a, b, x[i+ 4], 11);
b = md4_hh(b, c, d, a, x[i+12], 15);
a = md4_hh(a, b, c, d, x[i+ 2], 3 );
d = md4_hh(d, a, b, c, x[i+10], 9 );
c = md4_hh(c, d, a, b, x[i+ 6], 11);
b = md4_hh(b, c, d, a, x[i+14], 15);
a = md4_hh(a, b, c, d, x[i+ 1], 3 );
d = md4_hh(d, a, b, c, x[i+ 9], 9 );
c = md4_hh(c, d, a, b, x[i+ 5], 11);
b = md4_hh(b, c, d, a, x[i+13], 15);
a = md4_hh(a, b, c, d, x[i+ 3], 3 );
d = md4_hh(d, a, b, c, x[i+11], 9 );
c = md4_hh(c, d, a, b, x[i+ 7], 11);
b = md4_hh(b, c, d, a, x[i+15], 15);a = safe_add(a, olda);
b = safe_add(b, oldb);
c = safe_add(c, oldc);
d = safe_add(d, oldd);}
return Array(a, b, c, d);}
/*
* These functions implement the basic operation for each round of the
* algorithm.
*/
function md4_cmn(q, a, b, x, s, t)
{
return safe_add(rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);
}
function md4_ff(a, b, c, d, x, s)
{
return md4_cmn((b & c) | ((~b) & d), a, 0, x, s, 0);
}
function md4_gg(a, b, c, d, x, s)
{
return md4_cmn((b & c) | (b & d) | (c & d), a, 0, x, s, 1518500249);
}
function md4_hh(a, b, c, d, x, s)
{
return md4_cmn(b ^ c ^ d, a, 0, x, s, 1859775393);
}/*
* Calculate the HMAC-MD4, of a key and some data
*/
function core_hmac_md4(key, data)
{
var bkey = str2binl(key);
if(bkey.length > 16) bkey = core_md4(bkey, key.length * chrsz);var ipad = Array(16), opad = Array(16);
for(var i = 0; i < 16; i++)
{
ipad[i] = bkey[i] ^ 0x36363636;
opad[i] = bkey[i] ^ 0x5C5C5C5C;
}var hash = core_md4(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
return core_md4(opad.concat(hash), 512 + 128);
}/*
* Add integers, wrapping at 2^32. This uses 16-bit operations internally
* to work around bugs in some JS interpreters.
*/
function safe_add(x, y)
{
var lsw = (x & 0xFFFF) + (y & 0xFFFF);
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
return (msw << 16) | (lsw & 0xFFFF);
}/*
* Bitwise rotate a 32-bit number to the left.
*/
function rol(num, cnt)
{
return (num << cnt) | (num >>> (32 - cnt));
}/*
* Convert a string to an array of little-endian words
* If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
*/
function str2binl(str)
{
var bin = Array();
var mask = (1 << chrsz) - 1;
for(var i = 0; i < str.length * chrsz; i += chrsz)
bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
return bin;
}/*
* Convert an array of little-endian words to a string
*/
function binl2str(bin)
{
var str = "";
var mask = (1 << chrsz) - 1;
for(var i = 0; i < bin.length * 32; i += chrsz)
str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
return str;
}/*
* Convert an array of little-endian words to a hex string.
*/
function binl2hex(binarray)
{
var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
var str = "";
for(var i = 0; i < binarray.length * 4; i++)
{
str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF);
}
return str;
}/*
* Convert an array of little-endian words to a base-64 string
*/
function binl2b64(binarray)
{
var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var str = "";
for(var i = 0; i < binarray.length * 4; i += 3)
{
var triplet = (((binarray[i >> 2] >> 8 * ( i %4)) & 0xFF) << 16)
| (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
| ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
for(var j = 0; j < 4; j++)
{
if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
}
}
return str;
}См. также:
Реализация алгоритма SHA-1 на Javascript
Алгоритм MD5 в Javascript
GUID генератор на JavascriptРубрики: Алгоритмы | Комментариев нет »
Быстрые, быстрые циклы
16.04.2009 от dimohaНекто Gregory Reimer провел кучу тестов во всех современных браузерах на вопрос быстродействия обыкновенных циклов - один на прохождение по списку DOM-элементов, а второй классический перебор элементов массива. Максимальное быстродействие получается при использовании следующих конструкций:
// прохождение по списку DOM
for (var i=0, myNode; myNode = myCollection[i++]{
// делаем что нибудь здесь
}
var i = arr.length; while (i--) {
// делаем что нибудь здесь
}См. также:
Просмотр исходного кода выделенного фрагмента в Firefox
Создание уникальных лоадеров для AJAX
Преобразование фаренгейтов в градусыРубрики: Интересное, Производительность | Комментариев нет »
navigator.mozIsLocallyAvailable
16.04.2009 от dimohaОговорюсь сразу, что метод navigator.mozIsLocallyAvailable специфичен для Mozilla. А используется он для определения доступности в кэше того или иного URI в онлайн/офлайн режимах. Синтаксис:
window.navigator.mozIsLocallyAvailable(uri, ifOffline);uri - адрес ресурса, доступность которого требуется проверить. ifOffline - проверять ли данные в кэше?
См. также:
Проверка связи
Копируем данные в буфер обмена
Определение версии флеш-плейераРубрики: Разное, Браузеры | Комментариев нет »
Подключение JS файлов из Javascript
16.04.2009 от dimohaМожно ли динамически через Javascript подгружать другие JS-файлы? Однозначно можно при помощи функции, подобной этой:
function include(fn) {
document.write('<' + 'script');
document.write(' type="text/javascript"');
document.write(' src="' + fn + '">');
document.write('</' + 'script' + '>');
}См. также:
Определение версии флеш-плейера
Print_r для Javascript
Забавный букмарклет: монитор загрузки процессораРубрики: Интересное, Разное | Комментариев нет »
Array_diff в Javascript
09.04.2009 от dimohaФункция для вычисления расхождения массивов, аналогичная пэхапешной тезке.
function array_diff()
{
var arr1 = arguments[0], retArr = {};
var k1 = '', i = 1, k = '', arr = {};arr1keys:
for (k1 in arr1) {
for (i = 1; i < arguments.length; i++) {
arr = arguments[i];
for (k in arr) {
if (arr[k] === arr1[k1]) {
// If it reaches here, it was found in at least one array, so try next value
continue arr1keys;
}
}
retArr[k1] = arr1[k1];
}
}
return retArr;
}См. также:
Создание событий по клавиатурному сочетанию в Javascript
Mozilla & base64 в Javascript
SEO букмарклет для показа ссылок с nofollowРубрики: Алгоритмы | Комментариев нет »
Strip_tags в Javascript
09.04.2009 от dimohaФункция, аналогичная php-шной strip_tags, предназначенная для удаления тегов и строки. К слову, мне не нравится иногда поведение этой функции, а именно то, что при удалении тегов было бы неплохо заменять их на один пробел, чтобы не сливались слова из разных тегов.
function strip_tags(str, allowed_tags) {
var key = '', allowed = false;
var matches = [];
var allowed_array = [];
var allowed_tag = '';
var i = 0;
var k = '';
var html = '';var replacer = function(search, replace, str) {
return str.split(search).join(replace);
};// Build allowes tags associative array
if (allowed_tags) {
allowed_array = allowed_tags.match(/([a-zA-Z]+)/gi);
}str += '';
// Match tags
matches = str.match(/(<\/?[\S][^>]*>)/gi);// Go through all HTML tags
for (key in matches) {
if (isNaN(key)) {
// IE7 Hack
continue;
}// Save HTML tag
html = matches[key].toString();// Is tag not in allowed list? Remove from str!
allowed = false;// Go through all allowed tags
for (k in allowed_array) {
// Init
allowed_tag = allowed_array[k];
i = -1;if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+'>');}
if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+' ');}
if (i != 0) { i = html.toLowerCase().indexOf('</'+allowed_tag) ;}// Determine
if (i == 0) {
allowed = true;
break;
}
}if (!allowed) {
str = replacer(html, "", str); // Custom replace. No regexing
}
}return str;
}См. также:
Сортировка строк таблицы на клиентской стороне
Функция Trim для Javascript
Еще раз о Trim для JavascriptРубрики: Алгоритмы | Комментариев нет »
Как перекрыть select в Internet Explorer?
09.04.2009 от dimohaЭлементы SELECT это вечная проблема для JS-программиста при отладке скриптов под Internet Explorer. Основная проблема в том, что этот элемент в этом браузере практически ничем не перекрыть. Единственный способ избежать неприятного эффекта - скрывать селекты или перекрывать их элементом IFRAME.
См. также:
Safari 4: чемпион по скорости выполнения Javascript
Копируем данные в буфер обмена
Функция Javascript для добавления страницы в закладкиРубрики: Браузеры, Алгоритмы | Комментариев нет »
Позиция курсора в textarea
09.04.2009 от dimohaДве полезные функции, для получения значения позиции курсора и его установки в поле textarea. По идее должно работать и для полей типа input=text. Кроссбраузерно.
function getCaretPosition (ctrl) {var CaretPos = 0;
// IE Support
if (document.selection) {ctrl.focus ();
var Sel = document.selection.createRange ();Sel.moveStart ('character', -ctrl.value.length);
CaretPos = Sel.text.length;
}
// Firefox support
else if (ctrl.selectionStart || ctrl.selectionStart == '0')
CaretPos = ctrl.selectionStart;
return (CaretPos);
}function setCaretPosition(ctrl, pos)
{if(ctrl.setSelectionRange)
{
ctrl.focus();
ctrl.setSelectionRange(pos,pos);
}
else if (ctrl.createTextRange) {
var range = ctrl.createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
}См. также:
Создание событий по клавиатурному сочетанию в Javascript
Проверка максимальной длины введенного текста в textarea
Копируем данные в буфер обменаРубрики: Интересное | Комментариев нет »
Реализация алгоритма SHA-1 на Javascript
09.04.2009 от dimohaНашел реализацию алгоритма SHA-1 в Javascript в виде специальной библиотеки. Код следующий:
/*
* A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
* in FIPS PUB 180-1
* Version 2.1a Copyright Paul Johnston 2000 - 2002.
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
* Distributed under the BSD License
* See http://pajhome.org.uk/crypt/md5 for details.
*//*
* Configurable variables. You may need to tweak these to be compatible with
* the server-side, but the defaults work in most cases.
*/
var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode *//*
* These are the functions you'll usually want to call
* They take string arguments and return either hex or base-64 encoded strings
*/
function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length * chrsz));}
function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length * chrsz));}
function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length * chrsz));}
function hex_hmac_sha1(key, data){ return binb2hex(core_hmac_sha1(key, data));}
function b64_hmac_sha1(key, data){ return binb2b64(core_hmac_sha1(key, data));}
function str_hmac_sha1(key, data){ return binb2str(core_hmac_sha1(key, data));}/*
* Perform a simple self-test to see if the VM is working
*/
function sha1_vm_test()
{
return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d";
}/*
* Calculate the SHA-1 of an array of big-endian words, and a bit length
*/
function core_sha1(x, len)
{
/* append padding */
x[len >> 5] |= 0x80 << (24 - len % 32);
x[((len + 64 >> 9) << 4) + 15] = len;var w = Array(80);
var a = 1732584193;
var b = -271733879;
var c = -1732584194;
var d = 271733878;
var e = -1009589776;for(var i = 0; i < x.length; i += 16)
{
var olda = a;
var oldb = b;
var oldc = c;
var oldd = d;
var olde = e;for(var j = 0; j < 80; j++)
{
if(j < 16) w[j] = x[i + j];
else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);
var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)),
safe_add(safe_add(e, w[j]), sha1_kt(j)));
e = d;
d = c;
c = rol(b, 30);
b = a;
a = t;
}a = safe_add(a, olda);
b = safe_add(b, oldb);
c = safe_add(c, oldc);
d = safe_add(d, oldd);
e = safe_add(e, olde);
}
return Array(a, b, c, d, e);}
/*
* Perform the appropriate triplet combination function for the current
* iteration
*/
function sha1_ft(t, b, c, d)
{
if(t < 20) return (b & c) | ((~b) & d);
if(t < 40) return b ^ c ^ d;
if(t < 60) return (b & c) | (b & d) | (c & d);
return b ^ c ^ d;
}/*
* Determine the appropriate additive constant for the current iteration
*/
function sha1_kt(t)
{
return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 :
(t < 60) ? -1894007588 : -899497514;
}/*
* Calculate the HMAC-SHA1 of a key and some data
*/
function core_hmac_sha1(key, data)
{
var bkey = str2binb(key);
if(bkey.length > 16) bkey = core_sha1(bkey, key.length * chrsz);var ipad = Array(16), opad = Array(16);
for(var i = 0; i < 16; i++)
{
ipad[i] = bkey[i] ^ 0x36363636;
opad[i] = bkey[i] ^ 0x5C5C5C5C;
}var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz);
return core_sha1(opad.concat(hash), 512 + 160);
}/*
* Add integers, wrapping at 2^32. This uses 16-bit operations internally
* to work around bugs in some JS interpreters.
*/
function safe_add(x, y)
{
var lsw = (x & 0xFFFF) + (y & 0xFFFF);
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
return (msw << 16) | (lsw & 0xFFFF);
}/*
* Bitwise rotate a 32-bit number to the left.
*/
function rol(num, cnt)
{
return (num << cnt) | (num >>> (32 - cnt));
}/*
* Convert an 8-bit or 16-bit string to an array of big-endian words
* In 8-bit function, characters >255 have their hi-byte silently ignored.
*/
function str2binb(str)
{
var bin = Array();
var mask = (1 << chrsz) - 1;
for(var i = 0; i < str.length * chrsz; i += chrsz)
bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (32 - chrsz - i%32);
return bin;
}/*
* Convert an array of big-endian words to a string
*/
function binb2str(bin)
{
var str = "";
var mask = (1 << chrsz) - 1;
for(var i = 0; i < bin.length * 32; i += chrsz)
str += String.fromCharCode((bin[i>>5] >>> (32 - chrsz - i%32)) & mask);
return str;
}/*
* Convert an array of big-endian words to a hex string.
*/
function binb2hex(binarray)
{
var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
var str = "";
for(var i = 0; i < binarray.length * 4; i++)
{
str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) +
hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF);
}
return str;
}/*
* Convert an array of big-endian words to a base-64 string
*/
function binb2b64(binarray)
{
var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var str = "";
for(var i = 0; i < binarray.length * 4; i += 3)
{
var triplet = (((binarray[i >> 2] >> 8 * (3 - i %4)) & 0xFF) << 16)
| (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 )
| ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF);
for(var j = 0; j < 4; j++)
{
if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
}
}
return str;
}См. также:
MD4 в Javascript
Алгоритм MD5 в Javascript
GUID генератор на JavascriptРубрики: Алгоритмы | Комментариев нет »
О правилах оформления исходного кода
02.04.2009 от dimohaЗнаете что больше всего меня бесит в классически оформленном коде Javascript? Расстановка фигурных кавычек в стиле «граблей»! Речь идет о вот чем:
function user() {
....
for (..) {
...
}
}Неужели никто не понимает, что подобное размещение первой открывающей фигурной кавычки попросту делает код нечитабельным? Ведь грамотно используя табуляцию можно всегда четко отследить ветвления даже в очень сложном коде. А тут же просто глаза заболят от постоянного переключения внимания справа налево.
См. также:
Просмотр исходного кода выделенного фрагмента в Firefox
AJAX-формы: как учесть пользователей с отключенным Javascript?
Проверка существования функции в JavascriptРубрики: Разное | Комментариев нет »
Преобразование фаренгейтов в градусы
02.04.2009 от dimohaЕсли вы смотрите какой-нибудь западный фильм и услышали нереальное для вас значение температуры, то знайте, что это скорей всего температура в фаренгейтах. Хотели бы узнать сколько это будет в градусах цельсия? Функция для преобразования значения температуры из фаренгейтов в градусы цельсия:
function f2c_convert(fv) {
fv = fv * 9 / 5 + 32;
fv = Math.round(fv);
return fv;
}См. также:
AJAX-формы: как учесть пользователей с отключенным Javascript?
Параметры функции по умолчанию в Javascript
toStaticHTML и IE 8: чистый HTMLРубрики: Разное | Комментариев нет »
Serialize в Javascript? Это возможно!
02.04.2009 от dimohaОказывается в рамках проекта Php.js данная проблема давным давно решена. В Javascript можно сериализовать данные и получить сериализованную строку точь в точь как в PHP. Исходный код функции:
function serialize( mixed_value ) {
// http://kevin.vanzonneveld.net
// + original by: Arpad Ray (mailto:arpad@php.net)
// + improved by: Dino
// + bugfixed by: Andrej Pavlovic
// + bugfixed by: Garagoth
// % note: We feel the main purpose of this function should be to ease the transport of data between php & js
// % note: Aiming for PHP-compatibility, we have to translate objects to arrays
// * example 1: serialize(['Kevin', 'van', 'Zonneveld']);
// * returns 1: 'a:3:{i:0;s:5:"Kevin";i:1;s:3:"van";i:2;s:9:"Zonneveld";}'
// * example 2: serialize({firstName: 'Kevin', midName: 'van', surName: 'Zonneveld'});
// * returns 2: 'a:3:{s:9:"firstName";s:5:"Kevin";s:7:"midName";s:3:"van";s:7:"surName";s:9:"Zonneveld";}'var _getType = function( inp ) {
var type = typeof inp, match;
var key;
if (type == 'object' && !inp) {
return 'null';
}
if (type == "object") {
if (!inp.constructor) {
return 'object';
}
var cons = inp.constructor.toString();
if (match = cons.match(/(\w+)\(/)) {
cons = match[1].toLowerCase();
}
var types = ["boolean", "number", "string", "array"];
for (key in types) {
if (cons == types[key]) {
type = types[key];
break;
}
}
}
return type;
};
var type = _getType(mixed_value);
var val, ktype = '';switch (type) {
case "function":
val = "";
break;
case "undefined":
val = "N";
break;
case "boolean":
val = "b:" + (mixed_value ? "1" : "0");
break;
case "number":
val = (Math.round(mixed_value) == mixed_value ? "i" : "d") + ":" + mixed_value;
break;
case "string":
val = "s:" + mixed_value.length + ":\"" + mixed_value + "\"";
break;
case "array":
case "object":
val = "a";
/*
if (type == "object") {
var objname = mixed_value.constructor.toString().match(/(\w+)\(\)/);
if (objname == undefined) {
return;
}
objname[1] = serialize(objname[1]);
val = "O" + objname[1].substring(1, objname[1].length - 1);
}
*/
var count = 0;
var vals = "";
var okey;
var key;
for (key in mixed_value) {
ktype = _getType(mixed_value[key]);
if (ktype == "function") {
continue;
}okey = (key.match(/^[0-9]+$/) ? parseInt(key) : key);
vals += serialize(okey) +
serialize(mixed_value[key]);
count++;
}
val += ":" + count + ":{" + vals + "}";
break;
}
if (type != "object" && type != "array") val += ";";
return val;
}См. также:
Проверка надежности пароля в Javascript
Сортировка строк таблицы на клиентской стороне
Strip_tags в JavascriptРубрики: Интересное | Комментариев нет »
Управляем стилями через Javascript
02.04.2009 от dimohaЧерез Javascript можно, оказывается очень легко и кроссбраузерно переключать используемый CSS-файл. К примеру:
function setStyleSheet(href)
{
elementById('cssfile).href = href;
}См. также:
Импорт данных из DOC-файла в HTML-документ средствами Javascript
Данные о мониторе пользователя
window.findправда только в FF
Рубрики: Интересное, Разное | Комментариев нет »
Запрещаем через Javascript правый клик на веб-странице
02.04.2009 от dimohaДурацкая затея конца 90-х годов, но тем не менее находятся и до сих пор мечтатели, считающие что запретив правый клик, можно запретить копи-паст. Именно для этой категории владельцев сайтов следующий код:
script language="JavaScript">
<!--
function xclick(e) {
if (document.all && event.button == 2) return false;
if (document.layers && e.which == 3) return false;
}
if (document.layers) document.captureEvents(Event.MOUSEDOWN);
document.onmousedown=xclick;
// --></script>P.S. Работает только в IE и некоторых версиях NN.
См. также:
Управляем стилями через Javascript
Как определить через Javascript все посещенные ссылки?
Копируем данные в буфер обменаРубрики: Разное, Браузеры | Комментариев нет »
Как измерить скорость выполнения скриптов в Javascript?
26.03.2009 от dimohaНа самом деле, измерить скорость выполнения скриптов в Javascript очень просто. Перед кодом, скорость выполнения которого измеряется нужно запомнить текущее время, а после вывести разницу между опять же текущим и тем, что запомнили:
var start = new Date();... ваш код
var end = new Date();
alert('Скорость ' + (end.getTime()-start.getTime()) + ' мс');Потестировал скорость работы jQuery на сайте службы доставки контактных линз, - работает быстро.
См. также:
Некоторые советы по производительности JS-скриптов
Javascript: работаем с Cookies
Safari 4: чемпион по скорости выполнения JavascriptРубрики: Производительность | Комментариев нет »
Многострочная переменная в Javascript или как не нужно делать
26.03.2009 от dimohaПорой люди от не знания идут на такие ухищрения, что потом, узнав наиболее оптимальный способ решения, сами же диву даются. На Snipplr публикуют иногда очень полезные советы. В этот раз там приведен пример как объявить многостроковую переменную в Javascript: Сравните:
var myString = ""+<r><![CDATA[
<div class="pmcb_top">
<div class="pmcb_tabs">
<ul>
<li>Chat</li>
<li>Monks'n'stuff</li>
<li>Other</li>
</ul>
</div>
</div>
]]></r>;См. также:
Сортировка строк таблицы на клиентской сторонеРубрики: Интересное | Комментариев нет »
Проверка связи
26.03.2009 от dimohaСмешно, но заголовок поста, - это вольный перевод состояния браузера с названием «Online». У Mozilla оказывается есть свойство, позволяющее уточнить в online-состоянии браузер или нет:
alert(window.navigator.onLine);См. также:
Копируем данные в буфер обмена
Просмотр исходного кода выделенного фрагмента в Firefox
navigator.mozIsLocallyAvailableРубрики: Интересное, Браузеры | Комментариев нет »
Быстрая вставка элементов в DOM из Javascript
26.03.2009 от dimohaПарень по имени John Resig обнаружил, что функция о которой практически все разработчики попросту забыли может ускорить в 2-3 раза скорость работы с DOM, например, при вставке элементов. Речь идет о document.createDocumentFragment. В приведенном ниже примере как раз она и используется… к слову, код работает во всех современных браузерах.
var div = document.getElementsByTagName("div");
var fragment = document.createDocumentFragment();for ( var e = 0; e <elems.length; e++ ) {
fragment.appendChild( elems[e] );
}for ( var i = 0; i <div.length; i++ ) {
div[i].appendChild( fragment.cloneNode(true) );
}См. также:
Быстрые, быстрые циклы
Забавный букмарклет: монитор загрузки процессора
Mozilla & base64 в JavascriptРубрики: Производительность, Алгоритмы | Комментариев нет »
Javascript: работаем с Cookies
26.03.2009 от dimohaДля тех, кто работает JQuery существует плагин Cookies, упрощающий работу с кукисами до нельзя. А вот программистам, предпочитающим «чистый» Javascript, повезло меньше. Быстрой и удобной работы с Cookies просто так не будет, если, конечно, не использовать приведенный ниже функции в своей работе :
function getCookie(name) { // get cookie
var dc = document.cookie;
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
if (begin == -1) {
begin = dc.indexOf(prefix);
if (begin != 0) return false;
} else {
begin += 2;
}
var end = document.cookie.indexOf(";", begin);
if (end == -1) {
end = dc.length;
}
return unescape(dc.substring(begin + prefix.length, end));
}
function setCookie(cookieName,cookieValue,nDays) { // set cookie
var today = new Date();
var expire = new Date();
if (nDays==null || nDays==0) nDays=1;
expire.setTime(today.getTime() + 3600000*24*nDays);
document.cookie = cookieName+"="+escape(cookieValue) + "; path=/; expires="+expire.toGMTString();
}См. также:
Как проверить включены ли cookie в браузере?
Как измерить скорость выполнения скриптов в Javascript?
Определение версии флеш-плейераРубрики: Разное, Алгоритмы | Комментариев нет »
« Раньше
Свежие записи
Перебор ассоциативных массивов
MD4 в Javascript
Быстрые, быстрые циклы
navigator.mozIsLocallyAvailable
Подключение JS файлов из Javascript
Array_diff в Javascript
Strip_tags в Javascript
Как перекрыть select в Internet Explorer?
Позиция курсора в textarea
Реализация алгоритма SHA-1 на Javascript
Рубрики:
Алгоритмы
Браузеры
Букмарклеты
Интересное
Производительность
Разное
Архив:
Апрель 2009
Март 2009
Февраль 2009
Январь 2009
Поиск:Мета:
RSS
RSS-лента комментариев
Браузеры
Вёрстка сайтов© 2006. Работает на Wordpress, тема от Kaushal Sheth , дизайн Arcsin, локализация Mywordрress.ru
Поделиться142012-03-09 19:29:38
nhfv-gfhf-hfv
ufufuf-
vfvfvf
Поделиться152012-03-09 19:29:56
ggggggggggggggggggggggggggggggggggggggggggg
Поделиться162012-03-10 11:38:44
дямс
пямс
бямс
Поделиться172012-03-10 11:39:25
чтомс
бомс
крямс
Поделиться182012-03-10 11:40:00
дримс
чимс-димс)
Поделиться192012-03-10 15:18:39
Я всех приглашаю на железный шашлык.
Доктор Живаго
Поделиться202012-03-10 15:25:43
мама мыла раму
ра-ра-ра
рама мыла маму
Поделиться212012-03-10 15:33:57
МАМА
папа
детишки
мама
папа
детишки
мама
папа
детишки
мама
папа
детишки
Поделиться222012-03-10 15:57:30
Траливали
Поделиться232012-03-10 17:02:30
[spoiler=Спойлер]не работает он тут![/spoiler]
Поделиться242012-03-10 17:08:51
[spoiler=Спойлер]не работает он тут![/spoiler]
Спойлерне работает он тут!
не работает он тут!
не работает он тут!
Поделиться252012-03-10 17:09:36
не работает он тут!
Поделиться262012-03-10 17:10:11
Спойлерне работает он тут!
Поделиться272012-03-10 17:36:00
не работает он тут!
не работает он тут!
Поделиться282012-03-10 17:36:19
не работает он тут!
Поделиться292012-03-10 19:38:58
не работает
он тут!
[spoiler=Спойлер]не работает он тут![/spoiler]
не работает он тут!
Спойлерне работает он тут!
Поделиться302012-03-11 03:32:54
Ага
Вот где прячется талантливый мистер Рипли




{