Hantera filsläppningar i HTML-sandlådor av annan typ än applicationAdobe AIR 1.0 och senare Innehåll i sandlådor av annan typ än application har inte tillgång till File-objekt som skapas när filer dras till ett AIR-program. Det går heller inte att skicka något av dessa File-objekt till programinnehåll via en sandlådebrygga. (Objektegenskaperna måste nås under serialisering.) Du kan emellertid fortfarande släppa filer i programmet genom att avlyssna nativeDragDrop-händelser för objektet HTMLLoader i AIR. Om en användare släpper en fil i en bildruta som är värd för icke programbaserat innehåll, sprids vanligtvis inte släpphändelsen från den underordnade till den överordnade. Eftersom händelserna skickas av HTMLLoader (som är behållare för allt HTML-innehåll i ett AIR-program) som inte tillhör HTML-händelseflödet, kan du emellertid ändå ta emot släpphändelsen i programinnehållet. För att kunna ta emot händelsen för ett filsläpp, lägger det överordnade dokumentet till en händelseavlyssnare i HTMLLoader-objektet med hjälp av referensen i window.htmlLoader: window.htmlLoader.addEventListener("nativeDragDrop",function(event){ var filelist = event.clipboard.getData(air.ClipboardFormats.FILE_LIST_FORMAT); air.trace(filelist[0].url); }); Följande exempel använder ett överordnat dokument som läser in en underordnad sida till en fjärrsandlåda (http://localhost/). Det överordnade avlyssnar händelsen nativeDragDrop för HTMLLoader-objektet och skriver ut filens URL. <html> <head> <title>Drag-and-drop in a remote sandbox</title> <script language="javascript" type="text/javascript" src="AIRAliases.js"></script> <script language="javascript"> window.htmlLoader.addEventListener("nativeDragDrop",function(event){ var filelist = event.clipboard.getData(air.ClipboardFormats.FILE_LIST_FORMAT); air.trace(filelist[0].url); }); </script> </head> <body> <iframe src="child.html" sandboxRoot="http://localhost/" documentRoot="app:/" frameBorder="0" width="100%" height="100%"> </iframe> </body> </html> Det underordnade dokumentet måste presentera ett giltigt släppmål genom att anropa Event-objektets preventDefault()-metod i HTML-händelsehanterarna dragenter och dragover. Annars kan släpphändelsen inte utföras. <html> <head> <title>Drag and drop target</title> <script language="javascript" type="text/javascript"> function preventDefault(event){ event.preventDefault(); } </script> </head> <body ondragenter="preventDefault(event)" ondragover="preventDefault(event)"> <div> <h1>Drop Files Here</h1> </div> </body> </html> |
|