Народ, подскажите реально ли каким-либо образом перехватить событие (хоть какое-нибудь), при перетаскивании текста мышкой (drag-n-drop) в момент "бросания" его в
textarea или
input.
Вот примеры кодов с которыми с которыми я экспериментировал:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Test 1</title>
<script type="text/javascript">
<!--//--><![CDATA[//><!--
function t1()
{
alert("onchange");
}
function t2()
{
alert("onmouseup");
}
//--><!]]>
</script>
</head>
<body>
<form action="#" method="get" name="f0" id="f0">
<textarea rows="5" cols="180" name="q1" id="q1">Lorem Ipsum is simply dummy text of the printing and typesetting industry.</textarea>
<textarea rows="5" cols="180" name="q2" id="q2" onchange="t1();" onmouseup="t2();"></textarea>
</form>
</body></html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Test 2</title>
</head>
<body>
<form action="#" method="get" name="f0" id="f0">
<textarea rows="5" cols="180" name="q1" id="q1">Lorem Ipsum is simply dummy text of the printing and typesetting industry.</textarea>
<textarea rows="5" cols="180" name="q2" id="q2"></textarea>
</form>
<script type="text/javascript">
<!--//--><![CDATA[//><!--
document.forms.f0.q2.onchange = function()
{
alert("onchange");
}
document.forms.f0.q2.onmouseup = function()
{
alert("onmouseup");
}
//--><!]]>
</script>
</body></html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Test 3</title>
</head>
<body>
<form action="#" method="get" name="f0" id="f0">
<textarea rows="5" cols="180" name="q1" id="q1">Lorem Ipsum is simply dummy text of the printing and typesetting industry.</textarea>
<textarea rows="5" cols="180" name="q2" id="q2"></textarea>
</form>
<script type="text/javascript">
<!--//--><![CDATA[//><!--
function t1()
{
alert("onchange");
}
document.forms.f0.q2.addEventListener("change", t1, true);
function t2()
{
alert("onmouseup");
}
document.forms.f0.q2.addEventListener("mouseup", t2, true);
//--><!]]>
</script>
</body></html>
Во всех случаях не происходит никакого события при перетаскивании текста из верхнего
textarea в нижний.
Я попробовал все возможные события, на примере вот такого скрипта (для третьего примера):
var a = [
"change",
"focus",
"blur",
"paste",
"mousedown",
"mouseup",
//"mouseover",
//"mouseout",
//"mousemove",
"click"
];
function t(event)
{
alert(event.type);
}
for (var i in a) {
document.forms.f0.q2.addEventListener(a[i], t, true);
}
Единственное событие, которое здесь происходит и может мне помочь хоть косвенно решить данную проблему это "
mouseover", потому что реально это событие происходит сразу после "бросания" текста. И все-же это решение очень грязное, т.к. событие "
mouseover" будет генерировать множество ложных срабатываний, которые мне надо будет отсеивать.
Опера (по крайней мере 9.27 - в других я не проверял) ведет себя точно так-же. Но на данный момент меня устроит решение, которое будет работать только в FireFox 3+.
P.S. Я на всякий случай протестил с различными
DOCTYPE и даже без оного - результат тот-же.