Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Drag &... FF
 
 автор: Pery   (30.05.2008 в 18:51)   письмо автору
 
 

Привет всем!

Вобщем, воспользовался я скриптом, который описывается в этой статье: http://www.ru-coding.com/js_9.php

Почти всё отлично, только в FireFox перетаскивание не работает. ):

Предупреждаю: я занимаюсь PHP, за JavaScript пока всерьёз не брался, поэтому попробуйте, пожалуйста, объяснить по понятнее.

Вопрос: как сделать поддержку этого скрипта как в IE, так и в FF?

   
 
 автор: PAT   (30.05.2008 в 22:12)   письмо автору
 
   для: 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 - их НЕОБХОДИМО задавать непосредственно в коде тега.

   
 
 автор: Pery   (30.05.2008 в 23:19)   письмо автору
 
   для: PAT   (30.05.2008 в 22:12)
 

Спасибо!

Сделал как вы сказали, тот div скопировал, работает. Но когда вставил в него другой div с формой, работать перестал.

   
 
 автор: PAT   (30.05.2008 в 23:51)   письмо автору
 
   для: Pery   (30.05.2008 в 23:19)
 

Зачем "вставлять в него", если прямо написано - можете оформить таким образом любой тег.

"Навесьте" стили (и нужные для скрипта перетаскивания, и вообще любые - бордеры, бакгроунды...) и обработчик ONMOUSEDOWN прямо на тег <FORM> - и "таскайте" эту форму на здоровье.

Что за болезнь такая - всё что надо и не надо, обязательно стараются "запихнуть" в еще один <DIV>?
Обувью ведь пользуетесь БЕЗ КОРОБКИ, в которой она продавалась... и колбасу едите, сняв с неё бумагу, в которую её вам завернули в магазине...
А в HTML все почему-то пытаются и обувь, и колбасу сначала в контейнер упаковать, а уже потом носить/кушать... вместе с упаковкой :-)

   
 
 автор: Pery   (31.05.2008 в 21:54)   письмо автору
 
   для: PAT   (30.05.2008 в 23:51)
 

И в самом деле, дался мне этот div (: .

Спасибо вам огромное за помощь.

Если у вас ещё будет время/желание, подскажите как быть с этими вопросами:

1) Как можно сделать возможность закрепить окно (блок) (то бишь выключить перемещение), в ответ на какое-либо событие (выбор чекбокса например)?
2) Как осуществить загрузку нескольких таких окон (блоков) (например, в меню, пользователь кликает на пункты меню, они открываются, но он должен их сам закрыть)? Я ставил себе ExtJS: штука, конечно шикарная, но я в их кодах ориентироваться начну месяца, наверное, через три. Вот там можно окон много открывать, сворачивать/разворачивать, закрывать...

   
 
 автор: PAT   (31.05.2008 в 23:26)   письмо автору
 
   для: 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 - не знаю вовсе. И - что самое плохое - и знать не хочу.

   
 
 автор: Pery   (01.06.2008 в 03:15)   письмо автору
 
   для: 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

Попробую разобраться как это работает.

   
 
 автор: PAT   (01.06.2008 в 05:05)   письмо автору
 
   для: Pery   (01.06.2008 в 03:15)
 

>У них файлы эти весят немерянно,
Ну так потому и знать я их не хочу.
Если стоит проблема помолоть кофе и есть возможность сделать или многофункциональный миксер (который в том числе будет и кофе молоть), или простейшую кофемолку, то что выберете?
Я лично предпочту делать кофемолку - возни меньше.
Но, разумеется, тем у кого рук нет, чтобы кофемолку сделать, тем, конечно, без чужого халявного миксера не обойтись.


>Вот, взгляните:
С трудом представляю себе задачу, для решения которой остро необходимы такие "прибамбасы"...
Если только делать специальную страницу исключительно ради примочек на ней.
Ну зайдет человек разок, потаскает эти окошки, позакрывает/пооткрывает их... поцокает языком... и уйдет, чтобы более туда никогда не возвращаться. Ну и?
Этого же эффекта можно добиться значительно проще, разместив несколько красивых фотографий голых баб - тоже зайдут разок, языком поцокают и уйдут навсегда.
Так стоит ли овчинка выделки? :-)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования