Article View: pl.comp.lang.javascript
Article #49645Re: Emulacja naciśnięcia strzałki
From: Paweł Arciszewski
Date: Mon, 11 Jan 2010 14:01
Date: Mon, 11 Jan 2010 14:01
52 lines
2999 bytes
2999 bytes
W dniu 2010-01-04 20:29, Tomasz pisze:
> Witam,
> Postaram się krótko i jasno...
> Sprawa dotyczy Firefoksa (testowane w 3.5).
> Robię edytor pracujący w FF, który przechwytuje naciśnięte
> klawisze(keypress) i wykonuje różne operacje na DOM.
> Całość pracuje w designMode (<body designMode = "On">). Niektórych
> klawiszy wolałbym nie obsługiwać, a konkretnie "strzałek". Ponieważ
> skrypty wykonują się w różnym czasie, zrobiłem sobie własną kolejkę, tak
> aby zachować właściwą kolejność obsługi klawiszy. W przypadku strzałek
> miałem nadzieję, że zadziała takie coś:
>
> if (klawisz.keyCode >=37 && klawisz.keyCode <=40) { // strzalki
> evt =
> document.getElementById("Editable").contentDocument.createEvent("KeyboardEvent");
>
> evt.initKeyEvent(
> "keypress", // in DOMString typeArg,
> true, // in boolean canBubbleArg,
> true, // in boolean cancelableArg,
> null, // in nsIDOMAbstractView viewArg, Specifies UIEvent.view. This
> value may be null.
> false, // in boolean ctrlKeyArg,
> false, // in boolean altKeyArg,
> false, // in boolean shiftKeyArg,
> false, // in boolean metaKeyArg,
> klawisz.keyCode, // in unsigned long keyCodeArg,
> 0); // in unsigned long charCodeArg);
> document.getElementById("Editable").contentDocument.documentElement.dispatchEvent(evt);
>
>
> Niestety nie działa i nie wiem czemu. Event handler wykrywa
> "naciśnięcie" klawisza (filtruję, żeby nie dodać ponownie do kolejki),
> ale kursor nie rusza.
> Zrobiłbym ręczną obsługę, ale tylko Left i Right mógłbym rozsądnie
> zaprogramować.
>
> Przeguglałem dokładnie i nic...
>
> Pozdrawiam
> Tomasz
Nie rozumiem czemu przechwytujesz strzałkę i rzucasz nową.
W każdym razie zablokowanie domyślnej obsługi strzałek można osiągnąć tak:
if (klawisz.keyCode >=37 && klawisz.keyCode <=40) { // strzalki
klawisz.preventDefault();
}
Pozdrawiam,
Paweł Arciszewski
Technical Details
Message-ID:
<hifavg$ftj$1@news.task.gda.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.task.gda.pl!not-for-mailReferences:
<hhtg8i$orm$1@nemesis.news.neostrada.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.task.gda.pl!not-for-mail From: Paweł Arciszewski <p.arciszewski@archol.pl> Newsgroups: pl.comp.lang.javascript Subject: Re: Emulacja naciśnięcia strzałki Date: Mon, 11 Jan 2010 15:01:20 +0100 Organization: CI TASK http://www.task.gda.pl/ Lines: 53 Message-ID: <hifavg$ftj$1@news.task.gda.pl> References: <hhtg8i$orm$1@nemesis.news.neostrada.pl> NNTP-Posting-Host: 77-253-183-77.adsl.inetia.pl Mime-Version: 1.0 X-Trace: news.task.gda.pl 1263218480 16307 77.253.183.77 (11 Jan 2010 14:01:20 GMT) X-Complaints-To: abuse@news.task.gda.pl NNTP-Posting-Date: Mon, 11 Jan 2010 14:01:20 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.1.5) Gecko/20091204 Thunderbird/3.0 In-Reply-To: <hhtg8i$orm$1@nemesis.news.neostrada.pl> X-Antivirus: avast! (VPS 100110-1, 2010-01-10), Outbound message X-Antivirus-Status: Clean Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit