Вы не зашли.

#1 

WorldsRadio
Постоялец
Имя: Алексей
Откуда: Челябинск
Зарегистрирован: 2012-04-11
Сообщений: 451
На форуме: 113 час.
Репутация: 3 (67%) ±
Инфо  Написать

мжно ли как то усовершенствовать скрипт, не меняя его свойства?

<script language="JavaScript1.2">
// Зона за которую можно таскать
var x = 0;
var y = 0;
var w = 100;
var h = 100;

document.onmousemove = MouseEvent;
document.onmousedown = MousePress;
document.onmouseup = MouseUnPress;

var browser = navigator.appName;
var ver = parseInt(navigator.appVersion);

if (browser != "Microsoft Internet Explorer")
{
    document.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP);
    document.captureEvents(Event.MOUSEMOVE);
    obj = document.getElementById('WIND');
}
else
{
    document.onselectstart = checkEl;
    document.ondragstart = checkEl;
    obj = document.all.item('WIND');
}

function checkEl()
{
   return false; 
}

var pressflag = false;
var oldcursx, oldcursy;
var firstflag = true;
var flag = false;

function MouseEvent(ev)
{
    windx = parseInt(obj.style.left);
    windy = parseInt(obj.style.top);
    cursx = (browser == "Microsoft Internet Explorer") ? event.clientX : ev.clientX;
    cursy = (browser == "Microsoft Internet Explorer") ? event.clientY : ev.clientY;

    if(firstflag)
    {
        oldcursx = cursx;
        oldcursy = cursy;
        firstflag = false;
    }

    if (flag) {
        obj.style.left = windx + cursx - oldcursx;
        obj.style.top =  windy + cursy - oldcursy;
    }
    oldcursx = cursx;
    oldcursy = cursy;
}

function MousePress()
{
    if ( (cursx > windx+x) &&
         (cursy > windy+y) &&
         (cursx < windx+x+w) &&
         (cursy < windy+y+h) ) 
    {
        obj.style.cursor = "move";
        flag = true;
    }
}

function MouseUnPress()
{
    if (flag)
    {
        pressflag = flag = false;
        obj.style.cursor = "auto";
    }
}
</script>

Неактивен

#2 

Foggy
памагу за 50€, помогу за 5
Имя: Андрей
Откуда: Петербург
Зарегистрирован: 2008-04-21
Сообщений: 2970
На форуме: 446 час.
Репутация: 296 (97%) ±
Инфо  Вебсайт  Написать

1. Что он сейчас делает? Мог бы хоть в кратце описать, что нам по коду это понимать? Можно, конечно, но долго же.
2. Усовершенствовать? Что это значит? Сократить в объёме, добавить какую-то возможность, что?
3. "Не меняя свойств" это значит не переписывая? не меняя входных переменных у функций? или что?


Форум чище без подписей в настройках. Рекомендую.
Я искал, но не нашёл.
Помощь — платная. Избранным помогаю за идею. Избранный тот, кто придумал идею, а не скопипастил.

Неактивен

#3 

BETEPAH
Знаток
Имя: Евгений
Откуда: Украина, Киев
Зарегистрирован: 2010-06-25
Сообщений: 1007
На форуме: 204 час.
Репутация: 238 (100%) ±
Инфо  Написать

Сообщение от Foggy:

1. Что он сейчас делает? Мог бы хоть в кратце описать, что нам по коду это понимать? Можно, конечно, но долго же.
2. Усовершенствовать? Что это значит? Сократить в объёме, добавить какую-то возможность, что?
3. "Не меняя свойств" это значит не переписывая? не меняя входных переменных у функций? или что?

1. Позволяет таскать мышкой объекты, если я правильно понял
2. и 3. присоединяюсь к вопросам.


Безграмотные вопросы в игноре.
Вопросы в личке приравниваются к индивидуальной платной консультации.

Неактивен

#4 

Pegass
Moderator
Откуда: СПб
Зарегистрирован: 2011-03-07
Сообщений: 2608
На форуме: 522 час.
Репутация: 366 (100%) ±
Инфо  Вебсайт  Написать

то ли у меня руки из опы, то ли скрипт не рабочий, но он точно должен таскать объекты, хотя так его писать Это жестоко особенно если в чате 4-я версия а не 5-я)))


- Здравствуйте, у меня тут это самое, ну то самое..
- Здравствуйте, с "этим самым" обратитесь к венерологу, а у нас техподдержка!
"слава богу пегас пишет скрипты а не поет" (с) Ventage aka New1

Неактивен

#5 

admiral
Status is loading... 99,9%
Имя: Alexandr
Откуда: берутся NaNы?
Зарегистрирован: 2007-02-04
Сообщений: 6600
На форуме: 1713 час.
Репутация: 1124 (100%) ±
Инфо  Вебсайт  Написать

Если этот вариант чем то не у страивает, есть другой - http://www.mintdesign.ru/blog/js-drag-and-drop


Скорая помощь - всегда рядом!
99% ошибок сидит в полуметре от монитора.

Неактивен

#6 

BETEPAH
Знаток
Имя: Евгений
Откуда: Украина, Киев
Зарегистрирован: 2010-06-25
Сообщений: 1007
На форуме: 204 час.
Репутация: 238 (100%) ±
Инфо  Написать

admiral, Спасибо за хороший скрипт. Немного модифицировал его, чтоб объект невозможно было вытащить наверх или влево ЗА окно браузера, откуда его не вернуть мышкой wink

попробовать.

Отредактированно BETEPAH (2012-10-04 21:08:22)


Безграмотные вопросы в игноре.
Вопросы в личке приравниваются к индивидуальной платной консультации.

Неактивен

#7 

Pegass
Moderator
Откуда: СПб
Зарегистрирован: 2011-03-07
Сообщений: 2608
На форуме: 522 час.
Репутация: 366 (100%) ±
Инфо  Вебсайт  Написать

BETEPAH, Залипает мышь, если во время перетаскивания курсор выходит за пределы документа)))


- Здравствуйте, у меня тут это самое, ну то самое..
- Здравствуйте, с "этим самым" обратитесь к венерологу, а у нас техподдержка!
"слава богу пегас пишет скрипты а не поет" (с) Ventage aka New1

Неактивен

#8 

BETEPAH
Знаток
Имя: Евгений
Откуда: Украина, Киев
Зарегистрирован: 2010-06-25
Сообщений: 1007
На форуме: 204 час.
Репутация: 238 (100%) ±
Инфо  Написать

Сообщение от Pegass:

BETEPAH, Залипает мышь, если во время перетаскивания курсор выходит за пределы документа)))

только если отпустить кнопку за пределами. Увы, если мышка за документом, он (документ) никак не может поймать onmouseup. Можно конечно попробовать останавливать курсор при достижении границ, но тогда скрипт будет разрастаться, мне кажется. Хотя... можно попробовать


Безграмотные вопросы в игноре.
Вопросы в личке приравниваются к индивидуальной платной консультации.

Неактивен

#9 

Foggy
памагу за 50€, помогу за 5
Имя: Андрей
Откуда: Петербург
Зарегистрирован: 2008-04-21
Сообщений: 2970
На форуме: 446 час.
Репутация: 296 (97%) ±
Инфо  Вебсайт  Написать

а можете ещё сделать, чтоб за правый и нижний края тоже не убрать было? очень полезный скрипт)


Форум чище без подписей в настройках. Рекомендую.
Я искал, но не нашёл.
Помощь — платная. Избранным помогаю за идею. Избранный тот, кто придумал идею, а не скопипастил.

Неактивен

#10 

BETEPAH
Знаток
Имя: Евгений
Откуда: Украина, Киев
Зарегистрирован: 2010-06-25
Сообщений: 1007
На форуме: 204 час.
Репутация: 238 (100%) ±
Инфо  Написать

Сообщение от Foggy:

а можете ещё сделать, чтоб за правый и нижний края тоже не убрать было? очень полезный скрипт)

Сделал. Залипания тоже убрал, теперь при выходе курсора за окно срабатывает obj.clicked = false:

Песочница с живым примером здесь.


Безграмотные вопросы в игноре.
Вопросы в личке приравниваются к индивидуальной платной консультации.

Неактивен

#11 

WorldsRadio
Постоялец
Имя: Алексей
Откуда: Челябинск
Зарегистрирован: 2012-04-11
Сообщений: 451
На форуме: 113 час.
Репутация: 3 (67%) ±
Инфо  Написать

ага видно подогнал я Вам темку, но по первому моему сообщению я попросил о уменьшить скрипт, облегчит, под словами про модернизировать так заключалось, и скрипт работает если что.

Неактивен

#12 

Foggy
памагу за 50€, помогу за 5
Имя: Андрей
Откуда: Петербург
Зарегистрирован: 2008-04-21
Сообщений: 2970
На форуме: 446 час.
Репутация: 296 (97%) ±
Инфо  Вебсайт  Написать

если бы в этом скрипте ещё был ресайз, цены бы ему не было ninja ну, это, конечно, на твоё усмотрение, но лично я был бы безмерно благодарен excl
Ветеран, ты крут!)


Форум чище без подписей в настройках. Рекомендую.
Я искал, но не нашёл.
Помощь — платная. Избранным помогаю за идею. Избранный тот, кто придумал идею, а не скопипастил.

Неактивен

#13 

BETEPAH
Знаток
Имя: Евгений
Откуда: Украина, Киев
Зарегистрирован: 2010-06-25
Сообщений: 1007
На форуме: 204 час.
Репутация: 238 (100%) ±
Инфо  Написать

Сообщение от Foggy:

если бы в этом скрипте ещё был ресайз

Чувствую, разработчики jquery UI на меня в суд скоро подадут за плагиат, это сейчас модно. Но я подумаю. Самому интересно разобраться с этим, думаю, сделаю рейсайз, это должно быть несложно.

Отредактированно BETEPAH (2012-10-06 23:21:44)


Безграмотные вопросы в игноре.
Вопросы в личке приравниваются к индивидуальной платной консультации.

Неактивен

#14 

Pegass
Moderator
Откуда: СПб
Зарегистрирован: 2011-03-07
Сообщений: 2608
На форуме: 522 час.
Репутация: 366 (100%) ±
Инфо  Вебсайт  Написать

Сообщение от BETEPAH:

Сообщение от Foggy:

если бы в этом скрипте ещё был ресайз

Чувствую, разработчики jquery UI на меня в суд скоро подадут за плагиат, это сейчас модно. Но я подумаю. Самому интересно разобраться с этим, думаю, сделаю рейсайз, это должно быть несложно.

Да так же, только вместо left и top менять надо width и height


ninja

тсссс

Отредактированно Pegass (2012-10-07 00:21:40)


- Здравствуйте, у меня тут это самое, ну то самое..
- Здравствуйте, с "этим самым" обратитесь к венерологу, а у нас техподдержка!
"слава богу пегас пишет скрипты а не поет" (с) Ventage aka New1

Неактивен

#15 

BETEPAH
Знаток
Имя: Евгений
Откуда: Украина, Киев
Зарегистрирован: 2010-06-25
Сообщений: 1007
На форуме: 204 час.
Репутация: 238 (100%) ±
Инфо  Написать

Сообщение от Pegass:

Да так же, только вместо left и top менять надо width и height

Не совсем, надо же еще о схлопывании было подумать. И кроме того, я так понимаю, что после этого захочется еще кнопку закрытия окна, а затем и апи по созданию окон из js.
Вот, что получилось в итоге - http://jsfiddle.net/BETEPAH/bhNYU/16/
скрипт в дополнение предыдущего

P.S. А если подключать jQuery, то уж тогда и UI их подключить можно и тогда вообще все вышеперечисленные требования сведутся к добавлению классов драггабле и ресайзабле. Интерес был реализовать это именно на чистом js, поразмять мозги wink

Отредактированно BETEPAH (2012-10-07 00:37:08)


Безграмотные вопросы в игноре.
Вопросы в личке приравниваются к индивидуальной платной консультации.

Неактивен

#16 

Foggy
памагу за 50€, помогу за 5
Имя: Андрей
Откуда: Петербург
Зарегистрирован: 2008-04-21
Сообщений: 2970
На форуме: 446 час.
Репутация: 296 (97%) ±
Инфо  Вебсайт  Написать

BETEPAH,
1. блок, за который надо тянуть - не в самом углу, не хватает 4px
2. можно растянуть за границы окна с появлением прокрутки
3. при подтаскивании блока к нижнему правому углу, блок резко отскакивает по диагонали назад. кстати, эта же проблема есть в скрипте Pegass(при уменьшении допустимых отступов от краёв).
4. ещё, когда создано много окон и они наезжают друг на друга, хорошо бы, чтоб по клику они получали фокус. ну, менять z-index, наверно.
или, как вариант, не давать одним блокам наезжать на другие.


Форум чище без подписей в настройках. Рекомендую.
Я искал, но не нашёл.
Помощь — платная. Избранным помогаю за идею. Избранный тот, кто придумал идею, а не скопипастил.

Неактивен

#17 

admiral
Status is loading... 99,9%
Имя: Alexandr
Откуда: берутся NaNы?
Зарегистрирован: 2007-02-04
Сообщений: 6600
На форуме: 1713 час.
Репутация: 1124 (100%) ±
Инфо  Вебсайт  Написать

big_smile тогда уж совсем для полноты еще не хватает пары кнопок свернуть и развернуть


Скорая помощь - всегда рядом!
99% ошибок сидит в полуметре от монитора.

Неактивен

#18 

Foggy
памагу за 50€, помогу за 5
Имя: Андрей
Откуда: Петербург
Зарегистрирован: 2008-04-21
Сообщений: 2970
На форуме: 446 час.
Репутация: 296 (97%) ±
Инфо  Вебсайт  Написать

admiral, да, и тогда это уже будет покушение не на jQuery UI, а на Windows big_smile


Форум чище без подписей в настройках. Рекомендую.
Я искал, но не нашёл.
Помощь — платная. Избранным помогаю за идею. Избранный тот, кто придумал идею, а не скопипастил.

Неактивен

#19 

Pegass
Moderator
Откуда: СПб
Зарегистрирован: 2011-03-07
Сообщений: 2608
На форуме: 522 час.
Репутация: 366 (100%) ±
Инфо  Вебсайт  Написать

BETEPAH, Давай уже допиливай)))) 1 - при ресайзе можно вытащить чуть вправо и вниз 2) залипание мыши при ресайзе если отпустить за пределами документа ))) 3) скрипт по созданию окон не плохо переделать на заполнение контентом creatModal(content,title,res_on_off ); content - контент вместе с хтмл, title - заголовок нового окна , res_on_off - можно ли изменять размер

PS jquery ui - слишком жирное удовольствие))) Может от меня отстанут с этими окошками blushblush

admiral,  кнопки свернуть и развернуть - это слишком просто и скучно, даже писать лень))

Отредактированно Pegass (2012-10-07 08:23:49)


- Здравствуйте, у меня тут это самое, ну то самое..
- Здравствуйте, с "этим самым" обратитесь к венерологу, а у нас техподдержка!
"слава богу пегас пишет скрипты а не поет" (с) Ventage aka New1

Неактивен

#20 

Foggy
памагу за 50€, помогу за 5
Имя: Андрей
Откуда: Петербург
Зарегистрирован: 2008-04-21
Сообщений: 2970
На форуме: 446 час.
Репутация: 296 (97%) ±
Инфо  Вебсайт  Написать

Pegass, писать может просто и скучно, зато в чате очень пригодилось бы. Особенно если нужно на время спрятать приватное вещание. Заново могут не разрешить big_smile а так можно было бы просто свернуть


Форум чище без подписей в настройках. Рекомендую.
Я искал, но не нашёл.
Помощь — платная. Избранным помогаю за идею. Избранный тот, кто придумал идею, а не скопипастил.

Неактивен

[ Generated in 0.010 seconds, 10 queries]