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

HTML+CSS+JavaScript

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

 

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

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

тема: WYSIWYG
 
 автор: Ressfourt   (24.11.2005 в 14:51)   письмо автору
 
 

подскажите пожалуйста как запретить перетаскивание обьктов( картинок и тд и тп) в диалоговое окно WYSIWYG ... а то не хочется чтобы элементы дизайна сайта или чего либо просто нажатием мышки перетаскивали в редактор и постили... помогите пожалуйста идеей или кодом как этого избежать

   
 
 автор: elenaki   (24.11.2005 в 15:08)   письмо автору
 
   для: Ressfourt   (24.11.2005 в 14:51)
 

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

   
 
 автор: Ressfourt   (24.11.2005 в 15:28)   письмо автору
 
   для: elenaki   (24.11.2005 в 15:08)
 

нет это нужно для того чтобы в то что пишут не вставляли ничего лишнего... допустим они захватили 4 пиксельный рисунок и тд и тп в редактор и отслыют его... а зачем? вот хочется этого избежать

   
 
 автор: 12345   (24.11.2005 в 16:44)   письмо автору
 
   для: Ressfourt   (24.11.2005 в 15:28)
 

Отменить событие ondragstart на странице.

   
 
 автор: Ressfourt   (24.11.2005 в 16:52)   письмо автору
 
   для: 12345   (24.11.2005 в 16:44)
 

для деревенного обьясни куда как и зачем вставить добавлю что использую FCKeditor

   
 
 автор: 12345   (24.11.2005 в 17:27)   письмо автору
 
   для: Ressfourt   (24.11.2005 в 16:52)
 

Ты просил в 2 словах, а подробно - это надо знать механизм обработки событий.
Например, я для нетаскания рисунков использовал:
function eDrag(){event.returnValue=!1;}
document.ondragstart=eDrag;
Это значит, что отменяются все перетаскивания по событию, которое дошло до уровня <body>. Если надо разрешить его в окне редактирования, добавляешь для окна разрешение таскания (<div ondragstart=event.returnValue=!0>)

http://www.computerbooks.ru/books/Web_Internet/44/index_web/dhtml/ondragstart.htm

   
 
 автор: Ressfourt   (24.11.2005 в 17:34)   письмо автору
 
   для: 12345   (24.11.2005 в 17:27)
 

насколько я понимаю это работает только в ИЕ а как сделать чтоб и других браузерах тоже работало?

   
 
 автор: 12345   (24.11.2005 в 18:11)   письмо автору
 
   для: Ressfourt   (24.11.2005 в 17:34)
 

В FF не так красиво, там надо обрубать попытку таскания банальным onmousedown=return!1 . (Пишешь, например, обработчик, срабатывающий на все картинки. Как ни странно, при этом onClick работает, поэтому кликам не мешает. Но запретить таскание в IE мешает.) Итого, чтобы работало там и там,
<script>
document.ondragstart=function(){event.returnValue=!1;}
</script>
<body> 
<img src=xxx.jpg onmousedown=return!!document.all>
</body>

   
 
 автор: Ressfourt   (24.11.2005 в 18:30)   письмо автору
 
   для: 12345   (24.11.2005 в 18:11)
 

уфф да для IE понял... кхм а вот как бы для всех остальных браузерах написать на Яваскрипте функцию которая при онлоад создала массив из всех загруженных изображений и к каждому прикрутила onmousedown=return!

просто в яваскрипте я не силе можно скзаать туп как скрепка ... может кто пожет с такой функцией

   
 
 автор: Ressfourt   (24.11.2005 в 19:29)   письмо автору
 
   для: Ressfourt   (24.11.2005 в 18:30)
 

хотя может есть альтернатива... FCKeditor использует IFRAME может есть функции которые запрещают перетаскивание обьектов в IFRAME ??

   
 
 автор: 12345   (25.11.2005 в 12:34)   письмо автору
 
   для: Ressfourt   (24.11.2005 в 19:29)
 

Нет, через события естественнее, а запрета сброса таскаемого объекта - такой функции нет. И массив - не тот метод, что используется, а ловится любое событие и проверяется, от какого оно элемента. Если от image (Ev.target.tagName()=='IMG'), то выполняется запрет таскания. В данном случае запрещаем все таскания (пров. в IE6sp2, Op7.52, FF1.06):
<script>
document.ondragstart=function(){event.returnValue=!1;}
onmousedown=function(Ev){Ev.preventDefault();}
</script><body> 
<img src=xxx.jpg onclick=alert(0)>
</body>
Клики при этом, как можно убедиться, работают. Использована особенность, что в Мозилле события при окне, а не только при документе, а в IE - при документе.

   
 
 автор: Ressfourt   (25.11.2005 в 14:27)   письмо автору
 
   для: 12345   (25.11.2005 в 12:34)
 

спасиб хех но тут тогда это не поможет человек может с другого сайта перетащить рисунок.... я решил попробывать через ругулярные выражения убивать то что не нужно

   
 
 автор: 12345   (25.11.2005 в 15:14)   письмо автору
 
   для: Ressfourt   (25.11.2005 в 14:27)
 

Но вопрос-то стоял - не таскать с текущей страницы.
Однако, обнаружился onDrop, который запрещает сбрасывать картинки из чужого окна в IE. А FF вообще показывает картинку как новую страницу, если тащишь её из другого окна (испр. - нет, версия FF 1.06, не поддерживает contentEditable ). Так что и эта задача решается:
<script>
document.ondragstart=function(){event.returnValue=!1;}
onmousedown=function(Ev){Ev.preventDefault();}
</script>
<body><div  contentEditable style=background-color:#eeeeee onDrop=return!1><br> b<r><br><br><br>
<img src=xxx.jpg onclick=alert(0)>
<br>b b<br><br>b сюда не затащишь картинки с других сайтов
<br></div>
<img src=xxx.jpg> - для демонстрации запрета таскания
</body> 

   
Rambler's Top100
вверх

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