Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> removeEventListener 
:(
    Опции темы
diadiavova
Дата 15.12.2009, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 11
Всего: 142



Хотелось бы увидеть код в контексте, чтобы попробовать в деле и что получится когда немного подправишь. Кое-что смущает(например this во вложенных функциях и многократная инициализация обработчиков, я просто не вкурсе как это js работает), но из того, что сразу бросается в глаза в этом коде
Код

    for(var i = 0; i < ell; i++) {
        if(el[i].className != 'ihint') { continue; }
        el[i].onmouseover = function() { ihint_over(this); };
        el[i].onmousemove = function() { ihint_move(event); };
        el[i].onmouseout = function() { ihint_out(this); };
    }
я бы выделил вот такой момент
Код

    for(var i = 0; i < ell; i++) {

На сколько я понял из дальнейшего ell - это коллекция элементов, а не число, поэтому надо было писать вместо  i < ell всё-таки  i < ell.length. Ну это к вопросу о "запятых".

Это сообщение отредактировал(а) diadiavova - 15.12.2009, 00:32


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Oxy
Дата 15.12.2009, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 70
Регистрация: 20.9.2009

Репутация: нет
Всего: 1



Цитата(diadiavova @  15.12.2009,  00:30 Найти цитируемый пост)
На сколько я понял из дальнейшего ell - это коллекция элементов

ИМХО
Код

var ell = el.length;

PM MAIL WWW   Вверх
diadiavova
Дата 15.12.2009, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 11
Всего: 142



Цитата(Oxy @  15.12.2009,  00:35 Найти цитируемый пост)
var ell = el.length;

Точно...пропёрся smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
diadiavova
Дата 15.12.2009, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 11
Всего: 142



Вот так вроде работает
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title></title>
</head>
<body>
    <input id="Button1" name="test" type="button" value="button" />
    <input id="Button2" name="test" type="button" value="button" />
    <input id="Button3" name="test" type="button" value="button" />
    <input id="Button4" name="test" type="button" value="button" />
    <input id="Button5" name="test" type="button" value="button" />
    <div id="info"></div>
    <script type="text/javascript">
        var info = document.getElementById("info");
        function ihint_over(arg)
        {
            arg.value="over";
        }
        function ihint_move(arg)
        {
            var el = arg.srcElement||arg.target;
            info.innerHTML = el.id;
        }
        function ihint_out(arg)
        {
            arg.value="out";
        }
        var el = document.getElementsByName("test");
        var ell = el.length;

    for (var i = 0; i < ell; i++)
        {
            //if (el[i].className != 'ihint') { continue; }
            el[i].onmouseover = function() { ihint_over(this); };
            el[i].onmousemove = function(e) { e = e || event; ihint_move(e); };
            el[i].onmouseout = function() { ihint_out(this); };
        }
        
    </script>

</body>
</html>


Это сообщение отредактировал(а) diadiavova - 15.12.2009, 01:37


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
bars80080
Дата 15.12.2009, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 15
Всего: 315



Цитата(diadiavova @  14.12.2009,  20:59 Найти цитируемый пост)
        body.onmousemove= function(e){ dropENS(bk[0].id, e, dc) }
        body.onmouseup= function(){ endDrop() }

мда, эта заморочка работает как надо.

будем иметь ввиду
PM MAIL WWW   Вверх
bars80080
Дата 15.12.2009, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 15
Всего: 315



Цитата(diadiavova @  14.12.2009,  23:30 Найти цитируемый пост)
Хотелось бы увидеть код в контексте, чтобы попробовать в деле и что получится когда немного подправишь

вот конкретный локализованный пример:
Код

<html>
<body><style>
#HINT { display: none; position: absolute; left: 300px; top: 300px; background: #eeeeee; padding: 10px; }
</style>
<script>
window.onload = function(){ ihint_init(); };
var IE = false;
if(window.ActiveXObject) { IE = true; }
function xmouse(e) { if(IE) { return event.clientX; } else { return e.pageX; }}
function ymouse(e) { if(IE) { return event.clientY; } else { return e.pageY; }}
function ihint_init() {
    var el = document.getElementsByTagName('img');
    var ell = el.length; var my;
    if(ell < 1) { return false; }
    if(el[0].addEventListener) {
        for(var i = 0; i < ell; i++) {
            if(el[i].className != 'ihint') { continue; }
            el[i].onmouseout = function() { ihint_out(); };
            (function(my) {
                my.addEventListener("mouseover", function(e){ ihint_over(e, my) }, false);
                my.addEventListener("mousemove", function(e){ ihint_move(e) }, false);
            })(el[i]);
        }
    } else {
        for(var i = 0; i < ell; i++) {
            if(el[i].className != 'ihint') { continue; }
            el[i].onmouseout = function() { ihint_out(this); };
            (function(my) {
                my.attachEvent("onmouseover", function(e){ ihint_over(e, my) });
                my.attachEvent("onmousemove", function(e){ ihint_move(e) });
            })(el[i]);
        }
    }
}
function ihint_over(e, x) {
    shHintWin(1, x.src, e);
}
function ihint_move(e) {
    var pX = document.documentElement.scrollLeft; var pY = document.documentElement.scrollTop;
    var xm = (IE) ? event.clientX : e.pageX;
    var ym = (IE) ? event.clientY : e.pageY;
    //var x = xmouse(e) + pX + 2; var y = ymouse(e) + pY + 2;
    var x = xm + pX + 2; var y = ym + pY + 2;
    var bk = document.getElementById('HINT');
    bk.style.left = x + 'px';
    bk.style.top = y + 'px';
}
function ihint_out() {
    shHintWin(0);
}
function shHintWin(x, xsrc, e)  {
    var bk = document.getElementById('HINT');
    var dk = document.getElementById('HINT1');
    if(!dk) { return false; }
    if(x == 1) {
        var img = new Image();
        img.src = xsrc;
        dk.innerHTML = '<img src="' + img.src + '" />';
        var pX = document.documentElement.scrollLeft; var pY = document.documentElement.scrollTop;
        var nx = xmouse(e) + pX + 2; var ny = ymouse(e) + pY + 2;
        bk.style.left = nx + 'px'; bk.style.top = ny + 'px';
        bk.style.display = 'block';
    } else {
        bk.style.display = 'none';
    }
}
</script>
<img src="1.jpg" class="ihint" />
<img src="1.jpg" />
<img src="1.jpg" class="ihint" />

<div id="HINT"><div id="HINT1">&nbsp;</div></div>
</body></html>

вся загвоздка была в том, чтобы запихнуть в функцию и event и this. прописать их в хтмл - и получается без нагромождений, 
но надо же так, указав одним классом
PM MAIL WWW   Вверх
diadiavova
Дата 15.12.2009, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 11
Всего: 142



Цитата(bars80080 @  15.12.2009,  12:36 Найти цитируемый пост)
вся загвоздка была в том, чтобы запихнуть в функцию и event и this

Ну с this при использовании его в замыканиях вообще лучше дело не иметь, там вопрос мутный smile , а вот через промежуточные параметры такие дела передаются без проблем. В принципе вот эта строчка 
Код

my.attachEvent("onmouseover", function(e){ ihint_over(e, my) });
могла выглядеть и так
Код

my.attachEvent("onmouseover", function(e, me){ ihint_over(e, me) });


Вот мне интересен другой вопрос(просто не в курсе как это в яваскрипте работает): когда ты в цикле объявляешь функцию это память не перегружает? Ведь по идее вот при вот таком коде
Код

for(var i = 0; i < 100; i++)
{
    ar[i].meth = function(){alert(this.toString());}
}
новая функция создаётся при каждой итерации цикла. При чём эти все функции одинаковые. Мне почему-то кажется, что такой код
Код

var myFunc = function(){alert(this.toString());}
for(var i = 0; i < 100; i++)
{
    ar[i].meth = myFunc;
}
будет работать более экономично по отношению к ресурсам. Или я чего-то не понимаю?

Это сообщение отредактировал(а) diadiavova - 15.12.2009, 16:36


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Amphiluke
Дата 15.12.2009, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 35
Всего: 112



Цитата(diadiavova @  15.12.2009,  19:35 Найти цитируемый пост)
Вот мне интересен другой вопрос

Дак это ж совсем разные случаи.

В первом случае:
Цитата(diadiavova @  15.12.2009,  19:35 Найти цитируемый пост)
Код

ar[i].meth = function(){alert(this.toString());}

каждый раз в цикле создается индивидуальная функция и присваивается атрибуту meth элемента массива ar.

Во втором случае:
Цитата(diadiavova @  15.12.2009,  19:35 Найти цитируемый пост)
Код

ar[i].meth = myFunc;

атрибуты math всех элементов массива ar указывают на одну и ту же единственную функцию myFunc.

Разумеется, второй вариант рациональнее.

-------------------------------------------------

И вообще, для наглядности сказанного выше кусочек демонстрационного кода  smile
Код

<script type="text/javascript">
    var f1 = function() {alert("Hey!");};
    var f2 = function() {alert("Hey!");};
    if (f1 == f2)
        alert("two functions are the same");
</script>

PM   Вверх
diadiavova
Дата 15.12.2009, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 11
Всего: 142



Цитата(Amphiluke @  15.12.2009,  17:01 Найти цитируемый пост)
Дак это ж совсем разные случаи.

Естественно разные. Результат один, а происходят разные вещи и расход ресурсов разный. Поэтому я и спрашиваю какие причины ля того, чтобы объявлять функцию в цикле?


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
bars80080
Дата 15.12.2009, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 15
Всего: 315



Цитата(diadiavova @  15.12.2009,  16:29 Найти цитируемый пост)
Поэтому я и спрашиваю какие причины ля того, чтобы объявлять функцию в цикле? 

согласен, уберу. но как тогда в неё засунуть эти параметры (event и this)?

Код

    if(el[0].addEventListener) {
        for(var i = 0; i < ell; i++) {
            if(el[i].className != 'ihint') { continue; }
            el[i].onmouseout = function() { ihint_out(); };
            (function(my) {
                my.addEventListener("mouseover", function(e){ ihint_over(e, my) }, false);
                my.onmousemove = ihint_move;
            })(el[i]);
        }
    }

как с mouseover поступить?
PM MAIL WWW   Вверх
diadiavova
Дата 15.12.2009, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 11
Всего: 142



Ну event точно так же через параметр, а что до ссылки на элемент, то функцию ты в принципе можешь вывести в глобальную область и тогда слово this будет возвращать ссылку на объект.

Добавлено через 4 минуты и 54 секунды
А кроме того, объект события имеет ссылку на отправителя этого события. В ИЕ это свойство srcElement, а в файрфоксе точно не помню, кажется targetObject


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
bars80080
Дата 16.12.2009, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 15
Всего: 315



образовалась новая проблема по этому вопросу

вот мы всё время говорили о textarea, но тут чёрт дёрнул меня подключить fckeditor. как знаете, эта штуковина заменяет текстарею на скрытое поле и фрейм. конечно, такой ползунок для такого эдитора ещё более полезен, но тут возникла естественная проблема - как только курсор оказывается над фреймом, то обработчик document.body.onmousemove конечно перестаёт действовать, ведь это не его документ

попытался в этом случае продублировать обработчики на фрейм, но там получилось такое нагромождение с этими parent и прочим, что пока снёс всё.

вооот, что хотел спросить: нет ли какого обходника простого или всё же придётся мучаться с линковкой?
PM MAIL WWW   Вверх
diadiavova
Дата 16.12.2009, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 11
Всего: 142



Цитата(bars80080 @  16.12.2009,  14:06 Найти цитируемый пост)
как знаете, эта штуковина заменяет текстарею на скрытое поле и фрейм.

Нет, я не в курсе. Но не вижу проблемы с обработкой событий фрейма, если он в том же домене, что и основной документ. Всё можно делать в одном документе, просто перенести в него все необходимые ссылки. Вот пример документа
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <title></title>
    </head>
    <body >
<iframe src="EditFrame.htm" height="300" width="300" id="fr1" onload="frameLoad();"  ></iframe>    
<div id="d1"></div>
<script type="text/javascript">

    var id = function(idText) { return document.getElementById(idText); }
    var fr1 = id("fr1"); ;
    var d1 = id("d1");
    var frDocument;
    var content;
    function frameLoad()
    {
        frDocument = fr1.contentDocument || fr1.contentWindow.document;
        content = frDocument.getElementById("content") || frDocument.body.children[0];
        content.onmousemove = function(e)
        {
            var e = e || fr1.contentWindow.event;
            d1.innerHTML = e.clientX+";"+e.clientY;
        }

    }
</script>
    </body>
</html>

А вот его фрейм
EditFrame.htm
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <title></title>
    </head>
    <body>
    <div id="content" style="width:100%;height:100%;"></div>
    </body>
</html>

Вся обработка производится в самом документе, просто в него надо добавить ссылки на нужные элементы фрейма.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
bars80080
Дата 30.12.2009, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 15
Всего: 315



так, я снова вернулся к этому вопросу.

значит, есть фрейм и надо приладить ползунок к нему. так как fckeditor вешает кучу своих событий, не хотелось бы ломать всё это дело.
придумалась мне вдруг такая схемка: мы жмём на ползунок, он расширяется (увеличивается высота и задаются отрицательные маргины вверх и низ) и получается поверх фрейма.

код такой:
Код

<html>
<body>
<style>
body { height: 100%; }
.area { width: 600px; }
.area textarea { width: 100%; height: 75px; }
.area iframe { width: 100%; height: 75px; }
.dropNS { position: relative; width: 100%; height: 6px; cursor: n-resize; border: 0px; background: #ffff00; /*border: solid 1px #ff0000;*/ }
.dropNS div { width: 100%; height: 6px; background: #f8f8ee; }
</style>
<script>
var dropNS = false;
var ua = navigator.userAgent.toLowerCase();
var isOpera = (ua.indexOf('opera')  > -1);
var IE = (!isOpera && ua.indexOf('msie') > -1);
function ymouse(e) { if(IE) { return event.clientY; } else { return e.pageY; }}
function getElementPosition(elemId, pos, ts) {
    if(ts) { var elem = elemId; }
    else { var elem = document.getElementById(elemId); }
    var w = elem.offsetWidth; var h = elem.offsetHeight;
    if(pos) { return {"width": w, "height":h}; }
    var l = 0, t = 0;
    while(elem) { l += elem.offsetLeft; t += elem.offsetTop; elem = elem.offsetParent; }
    return {"left":l, "top":t, "width": w, "height":h};
}
function startDrop(el, e) { 
    el.style.height = '146px';
    el.style.marginTop = '-70px';//(IE) ? '-70px' : '-140px';
    el.style.marginBottom = '-70px';//(IE) ? '-70px' : '-140px';
    el.getElementsByTagName('div')[0].style.marginTop = '70px';//(IE) ? '70px' : '140px';
    var bk = el.parentNode.getElementsByTagName('textarea'); if(!bk[0]) {
        var bk = el.parentNode.getElementsByTagName('iframe'); if(!bk[0]) { return false; }}
    if(!bk[0].id) { bk[0].id = 'RND' + Math.floor(Math.random()*1000000); }
    var p = getElementPosition(bk[0], true, true);
    var dp = ymouse(e) - p.height;
    document.body.onmousemove = function(e){ dropENS(e, bk[0].id, dp); }
    document.body.onmouseup = function(){ endDrop(el); }
    el.ondblclick = function(){ backDrop(bk[0].id); }
    return true;
}
function backDrop(el) {
    bk = document.getElementById(el);if(!bk) { return false; }
    bk.style.height = '75px';
    document.body.onmousemove = null; document.body.onmouseup = null;
    document.body.focus();
    return true;
}
function endDrop(el) {  
    el.getElementsByTagName('div')[0].style.marginTop = '0px';
    el.style.height = '6px';
    el.style.marginTop = '0px';
    el.style.marginBottom = '0px';
    document.body.onmousemove = null; document.body.onmouseup = null;
    document.body.focus();
    return true; }
function dropENS(e, el, dp) {
    bk = document.getElementById(el); if(!bk) { return false; }
    var fy = ymouse(e) - dp; if(fy < 10) { fy = 10; }
    bk.style.height = fy + 'px';
    return true;
}
</script>

<div class="area"><iframe>{V}</iframe><div class="dropNS" onmousedown="startDrop(this, event);"><div></div></div></div>

</body>
</html>

в ИЕ7 работает отлично, в ФФ, опере и хроме проявляется странный эффект. слой не реагирует на изменение marginTop, но при этом, если назначить слою бордюр (тот закомментированный стиль), то работает нормально во всех браузерах.

какой-то тотальный дефект мозиллы или гекко, кто там у них в основе.
как бы с ним справится, чтоб без бордюра работало?
PM MAIL WWW   Вверх
12345c
Дата 31.12.2009, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



По очереди.
Тема интересная, но есть общие замечания в порядке критики.
Такой метод, конечно, удобен, как и аналог его, зашитый в браузер Safari3+ (активная область перетаскивания внизу справа). Но лучше, если бы его вообще не было. Т.е. реализовать автоматическое расширение textarea, как сделано в 
http://www.google.com/search?client=opera&...o-Grow+Textarea :
http://habrahabr.ru/blogs/habrahabr_ideas/11064/
http://habrahabr.ru/blogs/habrahabr_ideas/11064/
Общая проблема в реализации в том, что в Опере не хватает информации о содержимом (не возвращается высота текста), поэтому для полной кроссбраузерности требуется громоздкое решение с эмуляцией текстареи в невидимом Div. 

Если при этом надо ограничить максимальную высоту, вводим ещё один параметр максимальной высоты. Тогда и понадобится визуальная область перетаскивания. Тронули её - высота фиксируется.

В случае использования div designMode="on", думаю, все проблемы решаются нормальнее (хотя не пробовал), и более гибкая функциональность, чем обсуждаемая здесь, будет реализована легче, кратко и без костылей.

Короче, рекомендую сразу разрабатывать более продвинутую юзабельность.


По приведённому коду - что-то во всех этих примерах очень много лишнего. Уйти от глобальных переменных - как известно, это значит использовать замыкания. Или, как вариант, записать обработчик в оперируемый DOM-объект div class="area". Но на самом деле, хранить функцию в объекте не нужно, потому что курсор мыши всегда один smile. Как появится mouseup, так удаляем тот единственный  Listener("mousemove"), которому ничего не мешает быть единственным глобальным.

Есть баг в IE6 - не установлен .area div(font-size:4px} или сколько надо.
...
Этот последний метод с закрылками должен тоже нормально работать (только поставить прозрачный рисунок вместо заливки).


--------------------
Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go
PM WWW   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0720 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.