Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как запретить копировать текст в TextFieldType.INPUT (http://www.flasher.ru/forum/showthread.php?t=201821)

Vreden 23.06.2013 17:33

Как запретить копировать текст в TextFieldType.INPUT
 
Необходимо запретить копировать текст в TextFieldType.INPUT
Выделение текста доступно, доступно изменение текста в поле, но необходимо запретить его копировать.
Т.е CTRL + C и выбор в контекстном меню пункта "Копировать" не должны приводить к размещению информации в буфере обмена.

джонатан 23.06.2013 18:57

Попробуйте слушать ctrl+c и по нажатию копировать в буффер пустую строку.

Код AS3:

System.setClipboard("");


Vreden 23.06.2013 19:24

Цитата:

Сообщение от джонатан (Сообщение 1139034)
Попробуйте слушать ctrl+c и по нажатию копировать в буффер пустую строку

Копирование в буфер происходит после, поэтому никакого эффекта это не имеет. К тому же перехват CTRL+C и CTRL+X мало эффективен, т.к. грамотный пользователь может переопределить нажатие клавиш для этих функций.

Но решение нашлось:

Код AS3:

                ......
                        __editText.addEventListener(KeyboardEvent.KEY_DOWN, __keyDown, false, 0, true);
                        __editText.addEventListener(MouseEvent.RIGHT_MOUSE_DOWN, __rightDown);
                }
 
                private function __rightDown(e:MouseEvent):void{}
 
                private function __keyDown(e:KeyboardEvent):void
                {
                        if (__editText.selectionBeginIndex < __editText.selectionEndIndex)
                                __editText.setSelection(__editText.selectionBeginIndex, __editText.selectionBeginIndex);
                }

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

WisP 23.06.2013 19:35

Vreden, остается возможность скопировать выделенный текст через меню AIR/браузера.

Vreden 23.06.2013 20:34

Цитата:

Сообщение от WisP (Сообщение 1139037)
Vreden, остается возможность скопировать выделенный текст через меню AIR/браузера.

Не понял, это как?

джонатан 23.06.2013 20:40

Можно вот как сделать.

Код AS3:

stage.addEventListener( Evetn.DEACTIVATE, deactivateHandler );
 
function deactivateHandler( event:Event ):void {
    System.setClipboard("");
}

При исчезновении фокуса с флешки, убивать clipboard.
Возможно сработает.

Tails 23.06.2013 21:17

У текст филда есть событие вставки символов, если эти символы === содержимому буфера обмена - отменяем вставку.

Vreden 24.06.2013 15:56

Цитата:

Сообщение от джонатан (Сообщение 1139042)
Можно вот как сделать.
При исчезновении фокуса с флешки, убивать clipboard.
Возможно сработает.

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

Цитата:

Сообщение от Tails (Сообщение 1139046)
У текст филда есть событие вставки символов, если эти символы === содержимому буфера обмена - отменяем вставку.

Тут я ничего не понял.

Tails 25.06.2013 12:06

Vreden,
Событие textInput:

Цитата:

Flash Player отправляет событие textInput, когда пользователь вводит один или несколько символов текста. Это событие может генерироваться различными методами ввода текста, включая стандартную клавиатуру, редакторы ввода текста (IME), системы распознавания голоса и речи и даже просто вставкой обычного текста без форматирования или информации о стилях.
Так вот, если вставляемые символы это содержимое буфера обмена - отменяете вставку.

Vreden 28.06.2013 02:00

Цитата:

Сообщение от Tails (Сообщение 1139196)
Так вот, если вставляемые символы это содержимое буфера обмена - отменяете вставку.

Я не понимаю, зачем мне отменять вставку в текстовое поле, когда мне нужно запретить копирование?


Часовой пояс GMT +4, время: 21:25.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.