|
|
|
| Привет всем!
Вобщем, воспользовался я скриптом, который описывается в этой статье: http://www.ru-coding.com/js_9.php
Почти всё отлично, только в FireFox перетаскивание не работает. ):
Предупреждаю: я занимаюсь PHP, за JavaScript пока всерьёз не брался, поэтому попробуйте, пожалуйста, объяснить по понятнее.
Вопрос: как сделать поддержку этого скрипта как в IE, так и в FF? | |
|
|
|
|
|
|
|
для: Pery
(30.05.2008 в 18:51)
| | Смотрите здесь: - http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=53491&page=1 мое сообщение автор: PAT (23.05.2008 в 03:17)
1. Скопируйте ВСЕ строки, начиная со строчек
<script>
var qwe, box, deltaX, deltaY;
| и заканчивая строками
function dragRelease (evt)
{
evt = new Evt (evt);
Evt.removeEventListener (document, 'mousemove', dragMove, false);
Evt.removeEventListener (document, 'mouseup', dragRelease, false);
box = evt.source; box.style.zIndex = 10;
}
|
2. Вставьте скопированное себе в программу между тегами <head> и </head>
3. Не забудьте в самый конец скопированного добавить закрывающий тег </script>
4. Ну и ещё сделайте пару изменений:
а) строку var qwe, box, deltaX, deltaY; замените на var box, deltaX, deltaY;
б) строчку box = evt.source; box.style.zIndex = 10; вовсе удалите.
-----
Ваше тело документа должно содержать следующее (обязательное выделено жирным, курсивом выделены те численные значения, кои вы должны выставить сами):
<body onload="windowLoaded (event)">
<div id="box" style="z-index : 123;
width : 234px;
height : 134px;
left : 123px;
top : 456px;
position: absolute;
border: 1px solid silver;"
onmousedown="dragPress (event)">Drag Me!</div>
| * Перетаскиваться может ЛЮБОЙ тег, а не только данный в примере тег <DIV>
** Количество перетаскиваемых тегов на странице - ЛЮБОЕ (надо каждому из них задать стиль по приведенной маске и "навесить" обработчик ONMOUSEDOWN)
*** Стили можно указать не только непосредственно внутри перетаскиваемого тега, но и между тегами <STYLE></STYLE> за исключением свойств left и top - их НЕОБХОДИМО задавать непосредственно в коде тега. | |
|
|
|
|
|
|
|
для: PAT
(30.05.2008 в 22:12)
| | Спасибо!
Сделал как вы сказали, тот div скопировал, работает. Но когда вставил в него другой div с формой, работать перестал. | |
|
|
|
|
|
|
|
для: Pery
(30.05.2008 в 23:19)
| | Зачем "вставлять в него", если прямо написано - можете оформить таким образом любой тег.
"Навесьте" стили (и нужные для скрипта перетаскивания, и вообще любые - бордеры, бакгроунды...) и обработчик ONMOUSEDOWN прямо на тег <FORM> - и "таскайте" эту форму на здоровье.
Что за болезнь такая - всё что надо и не надо, обязательно стараются "запихнуть" в еще один <DIV>?
Обувью ведь пользуетесь БЕЗ КОРОБКИ, в которой она продавалась... и колбасу едите, сняв с неё бумагу, в которую её вам завернули в магазине...
А в HTML все почему-то пытаются и обувь, и колбасу сначала в контейнер упаковать, а уже потом носить/кушать... вместе с упаковкой :-) | |
|
|
|
|
|
|
|
для: PAT
(30.05.2008 в 23:51)
| | И в самом деле, дался мне этот div (: .
Спасибо вам огромное за помощь.
Если у вас ещё будет время/желание, подскажите как быть с этими вопросами:
1) Как можно сделать возможность закрепить окно (блок) (то бишь выключить перемещение), в ответ на какое-либо событие (выбор чекбокса например)?
2) Как осуществить загрузку нескольких таких окон (блоков) (например, в меню, пользователь кликает на пункты меню, они открываются, но он должен их сам закрыть)? Я ставил себе ExtJS: штука, конечно шикарная, но я в их кодах ориентироваться начну месяца, наверное, через три. Вот там можно окон много открывать, сворачивать/разворачивать, закрывать... | |
|
|
|
|
|
|
|
для: Pery
(31.05.2008 в 21:54)
| | >1) Как можно сделать возможность закрепить окно (блок) (то бишь выключить перемещение), в ответ на какое-либо событие (выбор чекбокса например)?
Элементарно.
1. В самую первую строку добавляете так называемый "флаг", т.е. глобальную переменную, фиксирующую изменение состояния того же чекбокса. Т.е. первая строка станет такой:
var box, deltaX, deltaY, stat = 1;
|
2. На чекбокс вешаете обработчик ONCLICK, который вместе с изменением состояния чекбокса будет изменять и "флаг":
<input type="checkbox" onclick="stat = (stat) ? 0 : 1">
|
3. В перетаскиваемом объекте (который раньше был <DIV>'ом, а теперь - не знаю, что именно) добавляете проверку "флага":
onmousedown="if (stat) dragPress (event)"
| И всё!
>2) Как осуществить загрузку нескольких таких окон...
Вопроса не понял. Совсем.
Тупой я, наверно. Уж извините.
Да и невежда... что за штука такая - ExtJS - не знаю вовсе. И - что самое плохое - и знать не хочу. | |
|
|
|
|
|
|
|
для: PAT
(31.05.2008 в 23:26)
| | >Элементарно.
Супер! Ещё раз спасибо.
>Вопроса не понял. Совсем.
>Тупой я, наверно. Уж извините.
Я, просто, объяснять не очень умею...
Попробую так:
Нужно, что бы при нажатии пользователем кнопки (ссылки, картинки...) появлялся перетаскиваемый блок, а при нажатии другой кнопки, этот блок не исчезал, но загружался бы другой блок. Как окна в операционных системах, вобщем. Тут, наверное, ещё нужно, что бы окно не перезагружалось.
Но, я думаю, это будет довольно объёмно, да и не горит особо. Просто интересная возможность для веб-сайта, по моему.
>Да и невежда... что за штука такая - ExtJS - не знаю вовсе. И - что самое плохое - и знать не хочу.
Ну, если мельком захотите узнать (: :
ExtJS - это библиотека для JavaScript, которая создавалась для "Yahoo!". Для ньюбов, таких как я, - штука полезная: подгрузил ихний .js, взял из примеров (а их там много и, причём, неплохих) скрипт, переделал под себя и готово. Только: 1) Не люблю я использовать такие объёмные готовые решения, мне нужно только то, что мне нужно (: 2) У них файлы эти весят немерянно, раз в 5 больше той статики, которая у меня получается! Ориентироваться в этих кодах очень сложно (для меня), они ещё и пробелы поудаляли...
Добавил
Вот, взгляните:
Демо: http://www.dhtmlgoodies.com/scripts/floating_window_with_tabs/floating_window_with_tabs.html
Описание: http://www.dhtmlgoodies.com/index.html?whichScript=floating_window_with_tabs
Попробую разобраться как это работает. | |
|
|
|
|
|
|
|
для: Pery
(01.06.2008 в 03:15)
| | >У них файлы эти весят немерянно,
Ну так потому и знать я их не хочу.
Если стоит проблема помолоть кофе и есть возможность сделать или многофункциональный миксер (который в том числе будет и кофе молоть), или простейшую кофемолку, то что выберете?
Я лично предпочту делать кофемолку - возни меньше.
Но, разумеется, тем у кого рук нет, чтобы кофемолку сделать, тем, конечно, без чужого халявного миксера не обойтись.
>Вот, взгляните:
С трудом представляю себе задачу, для решения которой остро необходимы такие "прибамбасы"...
Если только делать специальную страницу исключительно ради примочек на ней.
Ну зайдет человек разок, потаскает эти окошки, позакрывает/пооткрывает их... поцокает языком... и уйдет, чтобы более туда никогда не возвращаться. Ну и?
Этого же эффекта можно добиться значительно проще, разместив несколько красивых фотографий голых баб - тоже зайдут разок, языком поцокают и уйдут навсегда.
Так стоит ли овчинка выделки? :-) | |
|
|
|
|