HTML'de sürükle ve bırakAdobe AIR 1.0 ve üstü HTML tabanlı bir uygulamaya veya uygulamadan (veya bir HTMLLoader öğesinde görüntülenen HTML'e veya HTML'den) veri sürüklemek için, HTML drag ve drop olaylarını kullanabilirsiniz. HTML sürükle ve bırak API'si sayesinde HTML içeriğindeki DOM öğelerine ve bu öğelerden veri sürükleyebilirsiniz. Not: Ayrıca, HTML içeriğine sahip HTMLLoader nesnesindeki olayları dinleyerek de AIR NativeDragEvent ve NativeDragManager API'lerini kullanabilirsiniz. Ancak HTML API'si HTML DOM ile daha başarılı bir şekilde entegredir ve size, varsayılan davranışın kontrolünü sağlar.
Varsayılan sürükle ve bırak davranışıHTML ortamı metin, görüntüler ve URL'leri de içeren sürükle ve bırak hareketleri için varsayılan davranış sağlar. Varsayılan davranışı kullanarak her zaman bu tür verileri bir öğenin dışına sürükleyebilirsiniz. Ancak, bir öğeye yalnızca metin sürükleyebilirsiniz ve yalnızca sayfanın düzenlenebilir bir bölgesinde bulunan öğelere sürükleyebilirsiniz. Bir sayfanın düzenlenebilir bölgeleri arasında veya içinde metni sürüklediğinizde, varsayılan davranış bir taşıma eylemi gerçekleştirir. Düzenlenemeyen bir bölgeden veya uygulamanın dışından düzenlenebilir bölgeye metin sürüklediğinizde, varsayılan davranış bir kopyalama eylemi gerçekleştirir. drag-and-drop olaylarını kendiniz işleyerek varsayılan davranışı geçersiz kılabilirsiniz. Varsayılan davranışı iptal etmek için, drag-and-drop olayları için gönderilen nesnelerin preventDefault() yöntemlerini çağırmalısınız. Seçilen eylemi gerçekleştirmek için gerekli olduğundan, verileri bırakma hedefine ekleyebilir ve sürükleme kaynağından kaldırabilirsiniz. Varsayılan olarak kullanıcı istediği metni seçip sürükleyebilir ve görüntüleri ve bağları sürükleyebilir. -webkit-user-select WebKit CSS özelliğini, bir HTML öğesinin nasıl seçilebileceğini kontrol etmek için kullanabilirsiniz. Örneğin -webkit-user-select öğesini none olarak ayarlarsanız, öğe içerikleri seçilebilir olmaz ve sürüklenemez. -webkit-user-drag CSS özelliğini, bir öğenin bütün olarak sürüklenip sürüklenemeyeceğini kontrol etmek için de kullanabilirsiniz. Ancak öğenin içerikleri ayrı öğeler olarak kabul edilir. Kullanıcı hala metnin seçili bir kısmını sürükleyebilir. Daha fazla bilgi için bkz. AIR’de CSS. HTML'de sürükleme ve bırakma olaylarıBir sürükleme işleminin kaynaklandığı başlatıcı öğe tarafından gönderilen olaylar şunlardır:
Sürükleme hedefi tarafından gönderilen olaylar şunlardır:
Bu olaylara yanıt olarak gönderilen olay nesnesi, mouse olayına benzerdir. (clientX, clientY) ve (screenX, screenY) gibi mouse olayı özelliklerini, fare konumunu belirlemek için kullanabilirsiniz. Bir drag olayı nesnesinin en önemli özelliği, sürüklenen verileri içeren dataTransfer öğesidir. dataTransfer nesnesi aşağıdaki özelliklere ve yöntemlere sahiptir:
HTML sürükle ve bırak için MIME türleriBir HTML drag-and-drop olayının dataTransfer nesnesiyle kullanılacak MIME türleri şunlardır:
Uygulama tanımlı dizeler de dahil olmak üzere diğer MIME dizelerini de kullanabilirsiniz. Ancak diğer uygulamalar aktarılan verileri tanımayabilir veya kullanmayabilir. dataTransfer nesnesine beklenen biçimde veriler eklemek sizin sorumluluğunuzdadır. Önemli: Yalnızca uygulama sanal alanında kod çalıştırma, bırakılan dosyalara erişebilir. Uygulama dışı sanal alanda bir File nesnesinin herhangi bir özelliğini okuma veya ayarlama girişiminde bulunmak bir güvenlik hatasına neden olur. Daha fazla bilgi için bkz. Uygulama dışı HTML sanal alanlarındaki dosya bırakmaları işleme.
HTML'de sürükleme efektleriSürükleme hareketinin başlatıcısı, dragstart olayının işleyicisindeki dataTransfer.effectAllowed özelliğini ayarlayarak izin verilen sürükleme efektlerini sınırlandırabilir. Aşağıdaki dize değerleri kullanılabilir:
Sürükleme hareketinin hedefi, kullanıcı bırakmayı tamamlarsa gerçekleştirilen eylemi göstermek için dataTransfer.dropEffect özelliğini ayarlayabilir. Bırakma efekti izin verilen efektlerden biriyse, sistem uygun kopyala, taşı veya bağ ver imlecini görüntüler. Değilse, sistem kullanılamaz imlecini görüntüler. Hedef tarafından bırakma efekti ayarlanmamışsa, kullanıcı değiştirici tuşlarını kullanarak izin verilen eylemler arasından seçim yapılabilir. Hem dragover hem de dragenter olaylarının işleyicilerindeki dropEffect değerini ayarlayın: 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"; } Not: dragenter için işleyicideki dropEffect özelliğini her zaman ayarlamanız gerekse de, sonraki dragover olayının özelliği varsayılan değere sıfırladığını unutmayın. Her iki olaya yanıt olarak da dropEffect öğesini ayarlayın.
|
|