🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.javascript
Article #49645

Re: Emulacja naciśnięcia strzałki

#49645
From: Paweł Arciszewski
Date: Mon, 11 Jan 2010 14:01
52 lines
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-mail
References: <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