Вы, возможно, не сможете «отключить вставку» как таковую (не размещая каким-либо образом элемент управления Flash самостоятельно, например, в приложении Windows или в каком-либо расширении браузера), но вы, безусловно, можете сделать довольно хорошее предположение. о том, как кто-то использует приложение с небольшой математикой на основе таймера. Вот (супер) грубый пример приложения Flex, иллюстрирующий, что я имею в виду:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*" creationComplete="this_creationComplete(event)">
<mx:Script>
<![CDATA[
private var timer:Timer;
import flash.events.Event;
private function this_creationComplete(event:Event):void
{
timer = new Timer(1000);
timer.addEventListener(TimerEvent.TIMER, timer_tick);
timer.start();
}
private function timer_tick(event:TimerEvent):void
{
var elapsedTimeInMinutes:Number = timer.currentCount / 60;
var averageWordLength:Number = 4;
var humanlyPossible:Number = 200;
var thisPersonsSpeed:Number = (txtTest.text.length / averageWordLength) / elapsedTimeInMinutes;
if (thisPersonsSpeed > humanlyPossible)
{
txtSpeed.text = "Wait, " + Math.floor(thisPersonsSpeed).toString() + " words per minute? This clown is probably cheating.";
txtTest.enabled = false;
timer.stop();
}
else
{
txtSpeed.text = "Currently typing " + Math.floor(thisPersonsSpeed).toString() + " wpm. Hurry up! Faster!";
}
}
]]>
</mx:Script>
<mx:VBox>
<mx:TextArea id="txtTest" width="600" height="300" />
<mx:Text id="txtSpeed" />
</mx:VBox>
</mx:Application>
По сути, это просто таймер, который вычисляет слова в минуту; если это число превышает определенный порог, таймер останавливается и форма отключается.
Конечно, это не железная оболочка, и если бы я сам реализовал это, я бы добавил некоторые дополнительные ориентированные на время гарантии (например, остановка таймера после периодов бездействия и т. Д.), Но это должно проиллюстрировать точка. Я уверен, что есть и другие решения, но что-то простое, подобное этому, может сработать для вас.
Обновление: несколько человек упомянули Event.PASTE, который будет работать, но не существует в ActionScript 2 / Flash Player 9. При условии, что вы смогли обеспечить работу Flash Player 10 и написать сценарий в ActionScript 3, что ' был бы другой вариант.