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>