Dra och släpp i HTMLAdobe AIR 1.0 och senare Om du vill dra data till och ut från ett HTML-baserat program (eller till och ut från den HTML som visas i HTMLLoader), kan du använda dra och släpp-händelserna för HTML. Med API:et för dra och släppa i HTML kan du dra till och från DOM-element i HTML-innehållet. Obs! Du kan också använda AIR-API:erna NativeDragEvent och NativeDragManager genom att avlyssna händelser för HTMLLoader-objektet som rymmer HTML-innehållet. HTML-API:t är emellertid bättre integrerat med HTML DOM och ger dig kontroll över standardbeteendet.
Standardbeteende för dra och släppHTML-miljön innehåller standardbeteenden för dra och släpp-gester som omfattar text, bilder och URL:er. Med hjälp av standardbeteendet kan du alltid dra dessa typer av data ut från ett element. Du kan emellertid bara dra text till ett element och bara till element i ett redigerbart område på en sida. När du drar text mellan eller inom redigerbara områden på en sida utför standardbeteendet en flyttåtgärd. När du drar texten till ett redigerbart område från ett icke redigerbart område eller från utsidan av ett program, utför standardbeteendet en kopieringsåtgärd. Du kan åsidosätta standardbeteendet genom att hantera dra och släpp-händelserna själv. Om du vill avbryta standardbeteendet måste du anropa preventDefault()-metoderna för objekten som skickas för dra och släpp-händelserna. Du kan sedan infoga data i släppmålet och ta bort data från dragningskällan om det behövs för att utföra den valda åtgärden. Användaren kan som standard dra och släppa all text samt dra bilder och länka. Med WebKit CSS-egenskapen, -webkit-user-select, kan du kontrollera hur HTML-element markeras. Om du till exempel ställer in -webkit-user-select på none kan elementinnehållet inte markeras och därför inte dras. Du kan också använda CSS-egenskapen -webkit-user-drag för att kontrollera om ett element som helhet kan dras. Innehållet i elementet behandlas emellertid separat. Användaren kan fortfarande dra en markerad del av texten. Mer information finns i CSS i AIR. Dra och släpp-händelser i HTMLHändelserna som skickas av initierarelement som dragningen startar från är följande:
Följande händelser skickas av ett dragningsmål:
Händelseobjektet som skickas som svar på dessa händelser påminner om en mushändelse. Du kan använda mushändelseegenskaperna, till exempel (clientX, clientY) och (screenX, screenY), för att ta reda på musens placering. Den viktigaste händelsen för ett dragningshändelseobjekt är dataTransfer, som innehåller de data som dras. Objektet dataTransfer har följande egenskaper och metoder:
MIME-typer för dra och släpp i HTMLMIME-typerna som används med dataTransfer-objektet för en dra och släpp-händelse i HTML omfattar:
Du kan använda andra MIME-strängar, bland annat programdefinierade strängar. Emellertid kanske andra program inte känner igen eller kan använda den överförda informationen. Det är ditt ansvar att lägga till data i objektet dataTransfer i det förväntade formatet. Viktigt! Det är bara kod som körs i sandlådan application som har åtkomst till släppta filer. Ett försök att läsa eller ställa in egenskaper för ett File-objekt i en annan sandlåda än application returnerar ett säkerhetsfel. Mer information finns i Hantera filsläppningar i HTML-sandlådor av annan typ än application.
Dragningseffekter i HTML.Initieraren till dragningsgesten kan begränsa vilka dragningseffekter som tillåts genom att ställa in egenskapen dataTransfer.effectAllowed i hanteraren för händelsen dragstart. Följande strängvärden kan användas:
Målet för dragningsgesten kan ställa in egenskapen dataTransfer.dropEffect till att ange vilken åtgärd som ska vidtas om användaren slutför släppningen. Om släppeffekten är en av de tillåtna åtgärderna, visas lämplig kopierings-, flyttnings- eller länkningsmarkör. Om inte, visas markören otillgänglig. Om ingen släppningseffekt ställs in av målet, kan användaren välja mellan de tillåtna åtgärderna med hjälp av modifieringstangenterna. Ställ in värdet dropEffect i hanterarna för både dragover- och dragenter-händelserna: function doDragStart(event) { event.dataTransfer.setData("text/plain","Text to drag"); event.dataTransfer.effectAllowed = "copyMove"; } function doDragOver(event) { event.dataTransfer.dropEffect = "copy"; } function doDragEnter(event) { event.dataTransfer.dropEffect = "copy"; } Obs! Även om du alltid bör ställa in egenskapen dropEffect i hanteraren för dragenter, ska du vara medveten om att nästa dragover-händelser återställer egenskapen till standardvärdet. Ställ in dropEffect som svar på båda händelserna.
|
|