Obsługa upuszczania plików w nieaplikacyjnym obszarze izolowanym HTML

Adobe AIR 1.0 i starsze wersje

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>