Nieaplikacyjna treść nie może uzyskać dostępu do obiektów File, które powstają w wyniku przeciągania plików do aplikacji AIR. Nie jest również możliwe przekazanie jednego z obiektów File do treści aplikacji za pomocą mostu obszaru izolowanego. (Do właściwości obiektu dostęp można uzyskać podczas serializacji). Nadal jest jednak możliwe upuszczanie plików w aplikacji przez wykrywanie zdarzeń nativeDragDrop środowiska AIR dla obiektu HTMLLoader.
Zazwyczaj jeśli użytkownik upuści plik w ramce, która zawiera treść nieaplikacyjną, zdarzenie drop nie jest propagowane od elementu podrzędnego do elementu nadrzędnego. Ponieważ jednak zdarzenia wywoływane przez obiekt HTMLLoader (który jest kontenerem dla całej treści HTML w aplikacji AIR) nie są częścią strumienia zdarzenia HTML, zdarzenie drop można nadal odbierać w treści aplikacji.
Aby odebrać zdarzenie dla upuszczania pliku, dokument nadrzędny dodaje detektor zdarzenia do obiektu HTMLLoader z użyciem odwołania dostarczonego przez
window.htmlLoader
:
window.htmlLoader.addEventListener("nativeDragDrop",function(event){
var filelist = event.clipboard.getData(air.ClipboardFormats.FILE_LIST_FORMAT);
air.trace(filelist[0].url);
});
W poniższym przykładzie skorzystano z dokumentu nadrzędnego, który ładuje podrzędną stronę do zdalnego obszaru izolowanego (http://localhost/). Element nadrzędny wykrywa zdarzenie
nativeDragDrop
obiektu HTMLLoader i wyświetla adres URL pliku.
<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>
Dokument podrzędny musi przedstawić poprawny cel upuszczania, wywołując metodę
preventDefault()
obiektu Event w modułach obsługi zdarzeń
dragenter
i
dragover
HTML. W przeciwnym razie zdarzenie drop może nigdy nie wystąpić.
<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>