DOM olayları - DOM events
DOM (Belge Nesne Modeli) Olayları , bir şeyin meydana geldiğine veya meydana gelmekte olduğuna dair bir sinyaldir ve kullanıcı etkileşimleri veya tarayıcı tarafından tetiklenebilir. JavaScript , JScript , ECMAScript , VBScript ve Java gibi istemci tarafı betik dilleri , HTML , XHTML , XUL ve SVG belgeleri gibi bir DOM ağacı içindeki öğe düğümlerinde çeşitli olay işleyicileri veya dinleyicileri kaydedebilir .
DOM Olaylarına Örnekler:
- Kullanıcı fareye tıkladığında
- Bir web sayfası yüklendiğinde
- Bir resim yüklendiğinde
- Fare bir öğenin üzerine geldiğinde
- Bir giriş alanı değiştirildiğinde
- Bir HTML formu gönderildiğinde
- Kullanıcı bir tuşa bastığında
Tarihsel olarak, DOM gibi, çeşitli web tarayıcıları tarafından kullanılan olay modelleri de bazı önemli farklılıklara sahipti. Bu, uyumluluk sorunlarına neden oldu. Bununla mücadele etmek için olay modeli World Wide Web Consortium (W3C) tarafından DOM Seviye 2'de standartlaştırıldı.
Olaylar
HTML olayları
Ortak olaylar
Çoğu öğe düğümü tarafından oluşturulabilecek çok sayıda olay vardır:
- Fare olayları.
- Klavye olayları.
- HTML çerçevesi/nesne olayları.
- HTML form olayları.
- Kullanıcı arayüzü olayları.
- Mutasyon olayları (bir belgenin yapısındaki herhangi bir değişikliğin bildirimi).
- İlerleme olayları ( XMLHttpRequest , File API tarafından kullanılır ).
Yukarıdaki olay sınıflandırmasının W3C'nin sınıflandırmasıyla tam olarak aynı olmadığını unutmayın.
| Kategori | Tip | Bağlanmak | Açıklama | kabarcıklar | iptal edilebilir |
|---|---|---|---|---|---|
| Fare | Tıklayın | tıklamada | Yangınlar işaretleme aygıtı düğmesine bir öğenin üstündeyken tıklanır. Bir tıklama, aynı ekran konumu üzerinde bir fare aşağı ve fare yukarı hareketi olarak tanımlanır. Bu olayların sırası şöyledir:
|
Evet | Evet |
| dblclick | ondblclick | İşaretleme aygıtı düğmesi bir öğenin üzerine çift tıklandığında tetiklenir | Evet | Evet | |
| fare aşağı | onmousedown | Bir öğenin üzerinde işaretleme aygıtı düğmesine basıldığında tetiklenir | Evet | Evet | |
| fare yukarı | onmouseup | İşaretleme aygıtı düğmesi bir öğe üzerinde bırakıldığında tetiklenir | Evet | Evet | |
| fareyle üzerine gelmek | fare üzerinde | İşaretleme aygıtı bir öğeye taşındığında tetiklenir | Evet | Evet | |
| fare hareketi | onmousemove | İşaretleme aygıtı bir öğenin üzerindeyken hareket ettirildiğinde tetiklenir | Evet | Evet | |
| fare çıkışı | fare çıkışı | İşaretleme aygıtı bir öğeden uzaklaştırıldığında tetiklenir | Evet | Evet | |
| sürükle başlat | ondragstart | Sürükleme başlatıldığında bir öğeye ateşlenir. | Evet | Evet | |
| sürüklemek | ondrag | Bu olay, sürükleme işlemi sırasında sürükleme kaynağında, yani sürükleme işleminin başlatıldığı öğede tetiklenir. | Evet | Evet | |
| ejderha | ondragenter | Bir sürükleme meydana gelirken fare bir öğenin üzerine ilk kez getirildiğinde tetiklenir. | Evet | Evet | |
| sürükleme | ondragleave | Bu olay, bir sürükleme meydana gelirken fare bir öğeden ayrıldığında tetiklenir. | Evet | Numara | |
| sürüklenmek | ondragover | Bu olay, bir sürükleme meydana geldiğinde fare bir öğe üzerinde hareket ettirildiğinde tetiklenir. | Evet | Evet | |
| düşürmek | ondrop | Drop olayı, sürükleme işleminin sonunda bırakmanın gerçekleştiği öğede tetiklenir. | Evet | Evet | |
| ejderha | ondragend | Sürüklemenin kaynağı, başarılı olsun ya da olmasın, sürükleme işlemi tamamlandığında bir dragend olayı alacaktır. | Evet | Numara | |
| Tuş takımı | tuşa basmak | onkeydown | Klavyede bir tuşa basıldığında tuşa basılmadan önce tetiklenir. | Evet | Evet |
| tuşa basma | tuşa basmak | Tuşa basıldıktan sonra klavyede bir tuşa basıldığında tetiklenir. | Evet | Evet | |
| anahtarlama | onkeyup | Klavyede bir tuş bırakıldığında tetiklenir | Evet | Evet | |
| HTML çerçevesi / nesnesi | yük | aşırı yük | Tetiklenir kullanıcı aracı pencere çerçeveleri, nesneler ve resimler dahil belge içinde tüm içeriği yüklenirken bitirir,
Öğeler için, hedef öğe ve içeriğinin tamamı yüklemeyi bitirdiğinde tetiklenir. |
Numara | Numara |
| boşaltmak | onunload | Kullanıcı aracısı bir pencereden veya çerçeveden tüm içeriği kaldırdığında tetiklenir
Öğeler için, hedef öğe veya içeriğinin herhangi biri kaldırıldığında tetiklenir. |
Numara | Numara | |
| iptal etmek | onabort | Bir nesne/görüntü tamamen yüklenmeden önce yüklenmesi durdurulduğunda tetiklenir | Evet | Numara | |
| hata | hata | Bir nesne/görüntü/çerçeve düzgün yüklenemediğinde tetiklenir | Evet | Numara | |
| yeniden boyutlandırmak | yeniden boyutlandırmak | Bir belge görünümü yeniden boyutlandırıldığında tetiklenir | Evet | Numara | |
| taslak | onscroll | Bir öğe veya belge görünümü kaydırıldığında tetiklenir | Hayır, belgedeki bir kaydırma olayının pencereye kabarcık vermesi dışında | Numara | |
| HTML formu | Seçme | onselect | Kullanıcı , giriş ve metin alanı dahil olmak üzere bir metin alanında bir metin seçtiğinde tetiklenir | Evet | Numara |
| değiştirmek | onchange | Bir denetim giriş odağını kaybettiğinde ve odak kazandığından beri değeri değiştirildiğinde tetiklenir | Evet | Numara | |
| Sunmak | göndermek | Bir form gönderildiğinde tetiklenir | Evet | Evet | |
| Sıfırla | onreset | Bir form sıfırlandığında tetiklenir | Evet | Numara | |
| odak | odaklan | Bir öğe, işaretleme aygıtı veya sekme gezintisi yoluyla odak aldığında tetiklenir | Numara | Numara | |
| bulanıklık | Bulanık | Bir öğe, işaretleme aygıtı veya sekmeli gezinme yoluyla odağı kaybettiğinde tetiklenir | Numara | Numara | |
| Kullanıcı arayüzü | odaklan | (Yok) | HTML odak olayına benzer, ancak herhangi bir odaklanabilir öğeye uygulanabilir | Evet | Numara |
| odaklanma | (Yok) | HTML blur olayına benzer, ancak herhangi bir odaklanabilir öğeye uygulanabilir | Evet | Numara | |
| DOMCaktifleştir | (Yok) | XUL komut olayına benzer. Örneğin bir fare tıklaması veya bir tuşa basma yoluyla bir öğe etkinleştirildiğinde tetiklenir. | Evet | Evet | |
| mutasyon | DOMSubtreeDeğiştirildi | (Yok) | Alt ağaç değiştirildiğinde tetiklenir | Evet | Numara |
| DOMNodeInserted | (Yok) | Bir düğüm başka bir düğümün alt öğesi olarak eklendiğinde tetiklenir | Evet | Numara | |
| DOMNodeKaldırıldı | (Yok) | DOM ağacından bir düğüm kaldırıldığında tetiklenir | Evet | Numara | |
| DOMNodeBelgeden Kaldırıldı | (Yok) | Belgeden bir düğüm kaldırılırken tetiklenir | Numara | Numara | |
| DOMNodeInsertedIntoDocument | (Yok) | Bir belgeye bir düğüm eklendiğinde tetiklenir | Numara | Numara | |
| DOMAttrModified | (Yok) | Bir öznitelik değiştirildiğinde tetiklenir | Evet | Numara | |
| DOMCharacterDataModified | (Yok) | Karakter verileri değiştirildiğinde tetiklenir | Evet | Numara | |
| İlerlemek | yük başlangıcı | (Yok) | İlerleme başladı. | Numara | Numara |
| ilerlemek | (Yok) | Devam etmekte. Loadstart gönderildikten sonra. | Numara | Numara | |
| hata | (Yok) | İlerleme başarısız oldu. Son ilerleme gönderildikten sonra veya ilerleme gönderilmediyse yük başlatma gönderildikten sonra. | Numara | Numara | |
| iptal etmek | (Yok) | İlerleme sonlandırılır. Son ilerleme gönderildikten sonra veya ilerleme gönderilmediyse yük başlatma gönderildikten sonra. | Numara | Numara | |
| yük | (Yok) | İlerleme başarılı. Son ilerleme gönderildikten sonra veya ilerleme gönderilmediyse yük başlatma gönderildikten sonra. | Numara | Numara | |
| yükleme | (Yok) | İlerleme durdu. Bir hatadan sonra, iptal veya yükleme gönderildi. | Numara | Numara |
Not o isimleri start "DOM" ile şu anda iyi desteklenmemektedir ve bu ve diğer performans nedenleriyle DOM Seviye 3'te W3C tarafından artık kullanılmamaktadır olaylar Mozilla ve Opera desteği DOMAttrModified , DOMNodeInserted , DOMNodeRemoved ve DOMCharacterDataModified . Chrome ve Safari , DOMAttrModified dışında bu etkinlikleri destekler .
Dokunma etkinlikleri
Apple'ın iOS'u ve Google'ın Android'i gibi dokunmatik özellikli cihazlarda çalışan web tarayıcıları ek etkinlikler oluşturur.
| Kategori | Tip | Bağlanmak | Açıklama | kabarcıklar | iptal edilebilir |
|---|---|---|---|---|---|
| Dokunma | dokunmatik başlangıç | Dokunmatik yüzeye/ekrana bir parmak yerleştirildiğinde tetiklenir. | Evet | Evet | |
| dokunma | Dokunmatik yüzeyden/ekrandan bir parmak kaldırıldığında tetiklenir. | Evet | Evet | ||
| dokunma hareketi | Ekrana yerleştirilmiş bir parmak ekranda hareket ettirildiğinde tetiklenir. | Evet | Evet | ||
| dokunmatik | Bir temas noktası, bir DOM öğesi tarafından tanımlanan etkileşimli alana hareket ettiğinde tetiklenir. | Evet | Evet | ||
| dokunma izni | Bir temas noktası, bir DOM öğesi tarafından tanımlanan etkileşimli alanın dışına çıktığında tetiklenir. | Evet | Evet | ||
| dokunmatik iptal | Bir kullanıcı aracısı , bir TouchPoint'in, UA penceresinin sınırlarının dışına çıkmak gibi uygulamaya özel bir şekilde kesintiye uğradığını belirtmek için bu olay türünü göndermelidir. Bir kullanıcı aracısı ayrıca, kullanıcı dokunmatik yüzeye cihazın veya uygulamanın yapılandırıldığından daha fazla dokunma noktası yerleştirdiğinde (bir işaretçinin (örneğin parmak veya ekran kalemi) bir arabirimin hedef yüzeyiyle kesiştiği koordinat noktası) bu olay türünü gönderebilir. saklayın, bu durumda TouchList'teki en eski TouchPoint nesnesi kaldırılmalıdır. | Evet | Numara |
Gelen W3C taslak önerisi, bir TouchEventbir teslim TouchListait Touchyerleri, değiştirici tuşları etkin olan bir TouchListbölgesinin Touchhedef DOM öğesindeki konumları ve TouchListbir Touchönceki sonra değişen konumlarda TouchEvent.
Apple bu çalışma grubuna katılmadı ve patentleri öneri sürecinde geç açıklayarak W3C'nin Touch Events Spesifikasyonu önerisini erteledi .
İşaretçi olayları
Fare, dokunmatik panel ve kalem gibi çeşitli giriş aygıtlarına sahip aygıtlardaki web tarayıcıları, tümleşik girdi olayları oluşturabilir. Kullanıcılar, ne tür bir giriş aygıtına basıldığını, o aygıtta hangi düğmeye basıldığını ve bir stylus kalem söz konusu olduğunda düğmeye ne kadar güçlü basıldığını görebilir. Ekim 2013 itibariyle bu etkinlik yalnızca Internet Explorer 10 ve 11 tarafından desteklenmektedir.
| Kategori | Tip | Bağlanmak | Açıklama | kabarcıklar | iptal edilebilir |
|---|---|---|---|---|---|
| Işaretçi | işaretçi aşağı | onpointerdown | İşaretleme aygıtı düğmesi etkinleştirildiğinde veya bir öğenin üzerine basıldığında tetiklenir. | Evet | Evet |
| işaretçi | onpointerup | İşaretleme aygıtı düğmesi bir öğe üzerinde bırakıldığında tetiklenir | Evet | Evet | |
| işaretçi iptal | onpointeriptal | Örneğin, aygıt bir işaretçi aşağı olayından sonra kaydırma/yakınlaştırma için kullanıldığından, bir işaretleme aygıtının olay üretmeye devam etme olasılığı düşük olduğunda tetiklenir. | Evet | Evet | |
| işaretçi taşımak | onpointermove | İşaretleme aygıtı bir öğenin üzerindeyken hareket ettirildiğinde tetiklenir | Evet | Evet | |
| işaretçi | onpointerover | İşaretleme aygıtı bir öğeye taşındığında tetiklenir | Evet | Evet | |
| işaretçi | onpointerout | İşaretleme aygıtı bir öğeden uzaklaştırıldığında tetiklenir. Ayrıca, aygıtın üzerine gelmeden işaret edilmesiyle işaretçiden sonra veya sonra tetiklenir. | Evet | Evet | |
| işaretçi | onpointerenter | İşaretleme cihazı bir eleman üzerine hareket ettirildiğinde veya ast elemanlarından birinin üzerine gelmeyi desteklemeyen işaretleme cihazının düğmesine basıldığında ateşlenir. | Numara | Evet | |
| işaretçi yaprağı | onpointerleave | İşaretleme aygıtı bir öğeden uzaklaştırıldığında veya fareyle üzerine gelmeyi desteklemeyen işaretleme aygıtının düğmesi, alt öğelerinin üzerinde bırakıldığında tetiklenir. | Numara | Evet | |
| gotpointercapture | ongotpointercapture | İşaretçi setPointerCapture yöntemiyle yakalandığında tetiklenir. | Evet | Numara | |
| Kayıp nokta yakalama | onlostpointercapture | İşaretçi, releasePointerCapture yöntemiyle serbest bırakıldığında tetiklenir. | Evet | Numara |
Bağımsız kullanıcı arayüzü etkinlikleri
Henüz gerçek anlamda uygulanmayan Indie UI çalışma grupları, web uygulaması geliştiricilerinin, kendisiyle eşleşebilecek farklı platforma özgü teknik olayları işlemek zorunda kalmadan standart kullanıcı etkileşimi olaylarını destekleyebilmelerine yardımcı olmak istiyor.
Kullanılabilir arabirimleri komut dosyası yazmak, özellikle kullanıcı arabirimi tasarım modellerinin yazılım platformları, donanım ve yerel ayarlar arasında farklılık gösterdiği ve bu etkileşimlerin kişisel tercihlere göre daha fazla özelleştirilebileceği düşünüldüğünde zor olabilir. Bireyler, arayüzün kendi sistemlerinde çalışma şekline alışkındır ve tercih ettikleri arayüz, web uygulaması yazarının tercih ettiği arayüzden sıklıkla farklıdır.
Örneğin, bir kullanıcının son eylemi geri alma niyetini engellemek isteyen web uygulaması yazarlarının, aşağıdaki tüm olayları "dinlemesi" gerekir:
- Windows ve Linux'ta Control+Z.
- Mac OS X'te Command+Z.
- Bazı mobil cihazlarda olayları sallayın.
Önceki eylemi "geri almak" için tek, normalleştirilmiş bir isteği dinlemek daha kolay olacaktır.
| Kategori | Tip | Açıklama | kabarcıklar | iptal edilebilir |
|---|---|---|---|---|
| Rica etmek | isteksiz | Kullanıcının önceki eylemi "geri almak" istediğini belirtir. (UndoManager arabiriminin yerini alabilir.) | Evet | Evet |
| yeniden talep | Kullanıcının daha önce "geri alınan" eylemi "yeniden yapmak" istediğini belirtir. (UndoManager arabiriminin yerini alabilir.) | Evet | numara | |
| genişletme talebi | Kullanıcının, daraltılmış bir bölümdeki (örneğin bir açıklama widget'ı) veya bir hiyerarşideki (örneğin, bir ağaç görünümü ) dal düğümündeki bilgileri ortaya çıkarmak istediğini belirtir . | Evet | Evet | |
| daraltma isteği | Kullanıcının, genişletilmiş bir bölümdeki (örneğin bir açıklama widget'ı) veya bir hiyerarşideki (örneğin, bir ağaç görünümü) dal düğümündeki bilgileri gizlemek veya daraltmak istediğini belirtir. | Evet | Evet | |
| görevden alma talebi | Kullanıcının mevcut görünümü "kapatmak" istediğini belirtir (örneğin, bir iletişim kutusunu iptal etme veya bir açılır menüyü kapatma). | Evet | Evet | |
| İsteği sil | Kullanıcının işaretli öğe veya geçerli görünüm üzerinde bir "sil" eylemi başlatmak istediğini belirtir. | Evet | Evet | |
| Odak Talebi | yönlü odak talebi | Kullanıcı aracısı web uygulamasına bir "yön odağı" isteği gönderdiğinde başlatılır. Web yazarları, standart tarayıcı odaklama ve bulanıklaştırma olayları yeterli olduğunda, yönsel odak talebi olaylarını kullanmamalı veya bunlara kaydolmamalıdır. Bu olayları gereksiz yere kullanmak, performansın düşmesine veya olumsuz kullanıcı deneyimine neden olabilir. | Evet | Evet |
| doğrusal odak talebi | Kullanıcı aracısı web uygulamasına bir "doğrusal odak" isteği gönderdiğinde başlatılır. Web yazarları, standart tarayıcı odaklama ve bulanıklaştırma olayları yeterli olduğunda, doğrusal odak isteği olaylarını kullanmamalı veya bunlara kaydolmamalıdır. Bu olay türü yalnızca, mantıksal bir sonraki öğenin odaklanılamadığı ve hatta talep edilene kadar DOM'da bile olamadığı veri ızgaraları gibi özel denetim türlerinde gereklidir. Bu olayları gereksiz yere kullanmak, performansın düşmesine veya olumsuz kullanıcı deneyimine neden olabilir. | Evet | Evet | |
| palet odak isteği | Kullanıcı aracısı web uygulamasına bir "palet odak" isteği gönderdiğinde başlatılır. Bu olayı alan Web uygulaması yazarları, odağı web uygulamasındaki ilk palete taşımalı veya odağı mevcut tüm paletler arasında dolaşmalıdır. Not: paletler bazen kalıcı olmayan iletişim kutuları veya denetçi pencereleri olarak adlandırılır. | Evet | Evet | |
| araç çubuğu odak isteği | Kullanıcı aracısı web uygulamasına bir "araç çubuğu odağı" isteği gönderdiğinde başlatılır. Bu olayı alan web uygulaması yazarları, odağı web uygulamasındaki ana araç çubuğuna taşımalı veya odağı mevcut tüm araç çubukları arasında dolaşmalıdır. | Evet | Evet | |
| Manipülasyon Talebi | taşıma talebi | Kullanıcı aracısı, x/y delta değerleriyle birlikte web uygulamasına bir taşıma isteği gönderdiğinde başlatılır. Bu, örneğin bir nesneyi bir yerleşim tuvalinde yeni bir konuma taşırken kullanılır. | Evet | Evet |
| panrequest | Kullanıcı aracısı, beraberindeki x/y delta değerleriyle birlikte web uygulamasına bir pan isteği gönderdiğinde başlatılır. Bu, örneğin bir haritayı veya başka bir özel resim görüntüleyiciyi kaydırırken merkez noktasını değiştirirken kullanılır. | Evet | Evet | |
| rotasyon talebi | Kullanıcı aracısı, beraberindeki başlangıç x/y değerleri ve derece cinsinden bir dönüş değeriyle birlikte web uygulamasına bir döndürme isteği gönderdiğinde başlatılır. | Evet | Evet | |
| yakınlaştırma isteği | Kullanıcı aracısı, beraberindeki orijin x/y değerleri ve yakınlaştırma ölçek faktörü ile birlikte web uygulamasına bir yakınlaştırma isteği gönderdiğinde başlatılır. | Evet | Evet | |
| Kaydırma İsteği | kaydırma isteği | Kullanıcı aracısı, beraberindeki x/y delta değerleri veya diğer tanımlanmış scrollType değerlerinden biriyle web uygulamasına bir kaydırma isteği gönderdiğinde başlatılır. Yazarlar bu olayı ve uiaction'ı yalnızca özel kaydırma görünümleriyle kullanmalıdır. | Evet | Evet |
| Değer Değişikliği Talebi | değer değiştirme talebi | Kullanıcı aracısı web uygulamasına bir değer değişikliği isteği gönderdiğinde başlatılır. Kaydırıcılar, karuseller vb. gibi özel aralık kontrollerinde kullanılır. | Evet | Evet |
Internet Explorer'a özgü olaylar
Ortak (W3C) olaylara ek olarak, Internet Explorer tarafından iki ana olay türü eklenir . Bazı olaylar, diğer tarayıcılar tarafından fiili standartlar olarak uygulanmıştır .
- Pano olayları.
- Veri bağlama olayları.
| Kategori | Tip | Bağlanmak | Açıklama | kabarcıklar | iptal edilebilir |
|---|---|---|---|---|---|
| Pano | kesmek | oncut | Bir seçim panoya kesildikten sonra ateşlenir. | Evet | Evet |
| kopyalamak | onkopi | Bir seçim panoya kopyalandıktan sonra tetiklenir. | Evet | Evet | |
| yapıştırmak | yapıştırmak | Panodan bir seçim yapıştırıldıktan sonra tetiklenir. | Evet | Evet | |
| önceden kesilmiş | onbeforecut | Bir seçim panoya kesilmeden önce tetiklenir. | Evet | Evet | |
| önceki kopya | onbeforecopy | Bir seçim panoya kopyalanmadan önce tetiklenir. | Evet | Evet | |
| ön macun | onöncepaste | Panodan bir seçim yapıştırılmadan önce tetiklenir. | Evet | Evet | |
| Bağlanma verileri | güncellemeden sonra | güncellemeden sonra | Bir veriye bağlı nesne güncellendikten hemen sonra tetiklenir. | Evet | Numara |
| güncelleme öncesi | güncellemeden önce | Bir veri kaynağı güncellenmeden önce tetiklenir. | Evet | Evet | |
| hücre değişikliği | oncellchange | Bir veri kaynağı değiştiğinde tetiklenir. | Evet | Numara | |
| veri mevcut | veri mevcut | Bir veri kaynağından yeni veriler kullanılabilir olduğunda tetiklenir. | Evet | Numara | |
| veri kümesi değişti | veri kümesi değişti | Bir veri kaynağındaki içerik değiştiğinde tetiklenir. | Evet | Numara | |
| veri kümesi tamamlandı | veri kümesi tamamlandı | Veri kaynağından veri aktarımı tamamlandığında tetiklenir. | Evet | Numara | |
| hata güncellemesi | hata güncellemesi | Bir veri alanı güncellenirken bir hata oluşursa tetiklenir. | Evet | Numara | |
| kürekçi | alıcı | Veri kaynağından yeni bir veri satırı kullanılabilir olduğunda tetiklenir. | Evet | Numara | |
| sıra çıkışı | onrowexit | Veri kaynağından bir veri satırı henüz bittiğinde tetiklenir. | Numara | Evet | |
| satırsilme | onrowsdelete | Veri kaynağından bir veri satırı silindiğinde tetiklenir. | Evet | Numara | |
| sıralı | eklenmiş | Veri kaynağından bir veri satırı eklendiğinde tetiklenir. | Evet | Numara | |
| Fare | bağlam menüsü | bağlam menüsü | Bağlam menüsü gösterildiğinde tetiklenir. | Evet | Evet |
| sürüklemek | ondrag | Fare sürüklenmesi sırasında (hareketli Öğe üzerinde) tetiklenir. | Evet | Evet | |
| sürükle başlat | ondragstart | Fare sürükleme başladığında (hareketli Öğede) tetiklenir. | Evet | Evet | |
| ejderha | ondragenter | Bir alana (hedef Elemanda) bir şey sürüklendiğinde tetiklenir. | Evet | Evet | |
| sürüklenmek | ondragover | Bir alan üzerinde (hedef Eleman üzerinde) bir sürükleme yapıldığında tetiklenir. | Evet | Evet | |
| sürükleme | ondragleave | Bir alandan (hedef Elemanda) bir şey sürüklendiğinde tetiklenir. | Evet | Evet | |
| ejderha | ondragend | Fare sürüklemesi sona erdiğinde tetiklenir (hareketli Öğe üzerinde). | Evet | Evet | |
| düşürmek | ondrop | Sürükleme sırasında (hedef Eleman üzerinde) geçerli bir hedef üzerinde bir fare düğmesi bırakıldığında tetiklenir. | Evet | Evet | |
| başlangıç seç | onselectstart | Kullanıcı metni seçmeye başladığında tetiklenir. | Evet | Evet | |
| Tuş takımı | Yardım | yardım | Kullanıcı yardımı başlattığında tetiklenir. | Evet | Evet |
| HTML çerçevesi/nesnesi | boşaltmadan önce | yüklemeden önce | Bir belge kaldırılmadan önce patlar. | Numara | Evet |
| Dur | durmak | Kullanıcı nesneyi yüklemeyi bıraktığında tetiklenir. (iptalden farklı olarak, stop olayı belgeye eklenebilir) | Numara | Numara | |
| HTML formu | önceeditodak | onbeforeeditfokus | Bir öğe düzenleme için odak kazanmadan önce tetiklenir. | Evet | Evet |
| seçim çerçevesi | Başlat | başlangıçta | Seçim çerçevesi yeni bir döngüye başladığında tetiklenir. | Numara | Numara |
| bitiş | bitirmek | Seçim çerçevesi döngüsü tamamlandığında tetiklenir. | Numara | Evet | |
| sıçrama | sıçrama | Kayan bir seçim çerçevesi diğer yöne geri döndüğünde tetiklenir. | Numara | Evet | |
| Çeşitli | ön baskı | onbeforeprint | Belge yazdırılmadan önce patlar | Numara | Numara |
| son baskı | sonradan basılmış | Belge yazdırıldıktan hemen sonra patlar. | Numara | Numara | |
| mülkiyet değişikliği | mülkiyet değişikliği | Bir nesnenin özelliği değiştirildiğinde tetiklenir. | Numara | Numara | |
| filtre değişimi | filtre değişimi | Bir filtre özellikleri değiştirdiğinde veya bir geçişi bitirdiğinde tetiklenir. | Numara | Numara | |
| hazır durum değişikliği | onreadystatechange | Bir öğenin readyState özelliği değiştiğinde tetiklenir. | Numara | Numara | |
| kaybetmek | onlosecapture | ReleaseCapture yöntemi çağrıldığında tetiklenir. | Numara | Numara |
Mozilla, Safari ve Opera'nın XMLHttpRequest nesnesi için readystatechange olayını da desteklediğini unutmayın . Mozilla ayrıca geleneksel olay kayıt yöntemini (DOM Düzey 0) kullanarak ön yükleme olayını da destekler. Mozilla ve Safari de bağlam menüsünü destekler, ancak Mac için Internet Explorer desteklemez.
Firefox 6 ve sonraki sürümlerin, baskı öncesi ve baskı sonrası olaylarını desteklediğini unutmayın.
XUL etkinlikleri
Ortak (W3C) olaylara ek olarak Mozilla, yalnızca XUL öğeleriyle çalışan bir dizi olay tanımladı .
| Kategori | Tip | Bağlanmak | Açıklama | kabarcıklar | iptal edilebilir |
|---|---|---|---|---|---|
| Fare | DOMMuseScroll | DOMMuseScroll | Fare tekerleği hareket ettirildiğinde patlayarak içeriğin kaymasına neden olur. | Evet | Evet |
| sürükle bırak | ondragdrop | Kullanıcı sürüklenen bir nesneyi bırakmak için fare düğmesini bıraktığında tetiklenir . | Numara | Numara | |
| ejderha | ondragenter | Sürükleme sırasında fare işaretçisi bir öğenin üzerinde ilk kez hareket ettiğinde tetiklenir. Mouseover olayına benzer ancak sürüklenirken gerçekleşir. | Numara | Numara | |
| sürüklemek | ondraj çıkışı | Sürükleme sırasında fare işaretçisi bir öğeden uzaklaştığında tetiklenir. Ayrıca bir element üzerindeki bir düşüşten sonra da adlandırılır. Mouseout olayına benzer ancak sürükleme sırasında gerçekleşir. | Numara | Numara | |
| sürükleme hareketi | ondrajektür | Kullanıcı, genellikle fare düğmesini basılı tutup fareyi hareket ettirerek öğeyi sürüklemeye başladığında tetiklenir. | Numara | Numara | |
| sürüklenmek | ondragover | Mousemove olayıyla ilgili olarak, bu olay bir öğenin üzerine bir şey sürüklenirken tetiklenir. | Numara | Numara | |
| Giriş | Onay KutusuDurumDeğiştir | Kullanıcı veya bir komut dosyası tarafından bir onay kutusu işaretlendiğinde veya işaretlenmediğinde tetiklenir. | Numara | Numara | |
| RadyoDurumDeğişikliği | Kullanıcı veya komut dosyası tarafından bir radyo düğmesi seçildiğinde tetiklenir. | Numara | Numara | ||
| kapat | kapalı | Pencereyi kapatmak için bir istek yapıldığında tetiklenir. | Numara | Evet | |
| emretmek | Emrinle | W3C DOMCActivate olayına benzer. Örneğin bir fare tıklaması veya bir tuşa basma yoluyla bir öğe etkinleştirildiğinde tetiklenir. | Numara | Numara | |
| giriş | giriş | Bir kullanıcı bir metin kutusuna metin girdiğinde tetiklenir. | Evet | Numara | |
| Kullanıcı arayüzü | DOMMenuItemEtkin | DOMMenuItemEtkin | Bir menü veya menü öğesi üzerine gelindiğinde veya vurgulandığında etkinleşir . | Evet | Numara |
| DOMMenuItemEtkin değil | DOMMenuItemEtkin değil | Bir menü veya menü öğesi artık üzerine gelinmediğinde veya vurgulanmadığında tetiklenir. | Evet | Numara | |
| bağlam menüsü | bağlam menüsü | Kullanıcı, öğenin bağlam menüsünü açmayı istediğinde tetiklenir. Bunu yapmak için yapılacak işlem platforma göre değişir, ancak genellikle sağ tıklama olacaktır. | Numara | Evet | |
| taşma | taşma | Tam boyutta görüntülemek için yeterli alan olmadığında bir kutuyu veya başka bir düzen öğesini tetikler. | Numara | Numara | |
| taşan değişti | taşma değişti | Taşma durumu değiştiğinde tetiklenir. | Numara | Numara | |
| taşma | yetersiz akış | Tam boyutta görüntülemek için yeterli alan olduğunda bir öğeye ateşlenir. | Numara | Numara | |
| popuphidden | onpopuphidden | Gizlendikten sonra bir açılır pencereye ateşlenir. | Numara | Numara | |
| popup gizleme | onpopuphiding | Gizlenmek üzereyken bir açılır pencereye ateşlenir. | Numara | Numara | |
| pop-upshowing | onpopupshowing | Açılmadan hemen önce bir açılır pencereye ateşlenir. | Numara | Evet | |
| pop-upgösterilen | onpop-upgösterilen | Açıldıktan sonra bir açılır pencereye ateşlenir, tıpkı açıldığında bir pencereye gönderilen onload olayı gibi. | Numara | Numara | |
| Emretmek | yayın | yayında | Bir gözlemciye yerleştirildi. Yayın olayı, dinlenen yayıncının nitelikleri değiştirildiğinde gönderilir. | Numara | Numara |
| komut güncellemesi | oncommandupdate | Bir komut güncellemesi gerçekleştiğinde tetiklenir. | Numara | Numara |
Diğer olaylar
Mozilla ve Opera 9 için, DOM içeriği yüklendiğinde tetiklenen DOMContentLoaded ve DOMFrameContentLoaded olarak bilinen belgelenmemiş olaylar da vardır . Bunlar, ilgili dosyaların (örn. resimler) yüklenmesinden önce tetiklendikleri için "yükleme"den farklıdır. Ancak, DOMContentLoaded, HTML 5 belirtimine eklenmiştir . DOMContentLoaded olayı, Webkit oluşturma motoru derlemesi 500+' da da uygulandı . Bu, tüm Google Chrome ve Safari 3.1+ sürümleriyle ilişkilidir . DOMContentLoaded, Internet Explorer 9'da da uygulanmaktadır .
Opera 9 ayrıca Web Forms 2.0 olaylarını DOMControlValueChanged , geçersiz , forminput ve formchange'i de destekler .
Olay akışı
Bir ağaca iki olay hedefinin katıldığı durumu düşünün . Her ikisinin de aynı olay türünde kayıtlı olay dinleyicileri var, "tıkla" deyin. Kullanıcı iç öğeye tıkladığında, onu işlemenin iki olası yolu vardır:
- Öğeleri dıştan içe doğru tetikleyin (olay yakalama). Bu model Netscape Navigator'da uygulanmaktadır .
- Öğeleri içten dışa doğru tetikleyin ( olay köpürmesi ). Bu model, Internet Explorer ve diğer tarayıcılarda uygulanmaktadır.
W3C bu mücadelede orta konumdadır.
W3C'ye göre, bir olay hedefi bir ağaca katıldığında olaylar üç aşamadan geçer:
- Yakalama aşaması: olay, kök olay hedefinden bir olayın hedefine doğru iner.
- Hedef aşaması: olay, olay hedefinden geçer
- Balon aşaması ( isteğe bağlı ): olay, bir olayın hedefinden kök olay hedefine geri döner. Balon aşaması yalnızca baloncuk oluşturan olaylar için gerçekleşir (nerede
event.bubbles == true)
Bu olay akışının görselleştirmesini https://domevents.dev adresinde bulabilirsiniz.
Etkinlikleri durdurma
Bir olay olay dinleyicileri arasında dolaşırken olay event.stopPropagation()veya ile durdurulabilir.event.stopImmediatePropagation()
-
event.stopPropagation(): mevcut olay aşamasında mevcut olay hedefine bağlı tüm olay dinleyicileri bittikten sonra olay durdurulur -
event.stopImmediatePropagation(): olay hemen durdurulur ve başka olay dinleyicisi yürütülmez
Bir olay durdurulduğunda artık olay yolu boyunca hareket etmeyecektir. Bir etkinliği durdurmak, bir etkinliği iptal etmez.
Bir olayı durdurmak için eski mekanizmalar
- Set
event.cancelBubbleiçintrue(Internet Explorer) event.returnValueÖzelliği şuna ayarlafalse
Etkinlikleri iptal etme
Bir cancelableetkinlik arayarak iptal edilebilir event.preventDefault(). Bir etkinliği iptal etmek, o etkinlik için varsayılan tarayıcı davranışını devre dışı bırakır. Bir etkinlik iptal edildiğinde, event.defaultPreventedözellik olarak ayarlanır true. Bir etkinliği iptal etmek, etkinliğin etkinlik yolu boyunca ilerlemesini durdurmaz.
Olay nesnesi
Event nesnesi, belirli bir olay hakkında, hedef öğe, basılan tuş, basılan fare düğmesi, fare konumu vb. dahil olmak üzere birçok bilgi sağlar. Ne yazık ki, bu alanda çok ciddi tarayıcı uyumsuzlukları vardır. Bu nedenle, bu makalede yalnızca W3C Event nesnesi tartışılmaktadır.
| İsim | Tip | Açıklama |
|---|---|---|
| tip | DOMString | Etkinliğin adı (DOM düzey 2'de büyük/küçük harf duyarlı değil, DOM düzey 3'te büyük/küçük harf duyarlı). |
| hedef | EventTarget | Olayın orijinal olarak gönderildiği EventTarget'ı belirtmek için kullanılır. |
| akımHedef | EventTarget | EventListener'ları şu anda işlenmekte olan EventTarget'ı belirtmek için kullanılır. |
| olayAşaması | imzasız kısa | Şu anda olay akışının hangi aşamasının değerlendirildiğini belirtmek için kullanılır. |
| kabarcıklar | boole | Bir olayın köpüren bir olay olup olmadığını belirtmek için kullanılır. |
| iptal edilebilir | boole | Bir olayın varsayılan eyleminin engellenip engellenmeyeceğini belirtmek için kullanılır. |
| zaman damgası | DOMTimeDamgası | Olayın oluşturulduğu zamanı (çağa göre milisaniye cinsinden) belirtmek için kullanılır. |
| İsim | argüman türü | argüman adı | Açıklama |
|---|---|---|---|
| yayılımı durdur | Olay akışı sırasında bir olayın daha fazla yayılmasını önlemek için. | ||
| önlemekVarsayılan | İptal edilebilirse olayı iptal etmek, yani olay sonucunda uygulama tarafından normal olarak gerçekleştirilen herhangi bir varsayılan eylem gerçekleşmeyecektir. | ||
| initEvent | DOMString | eventTypeArg | Olay türünü belirtir. |
| boole | canBubbleArg | Olayın balon olup olmayacağını belirtir. | |
| boole | iptal edilebilirArg | Olayın varsayılan eyleminin önlenip engellenmeyeceğini belirtir. |
Olay işleme modelleri
DOM Düzey 0
Bu olay işleme modeli Netscape Navigator tarafından tanıtıldı ve 2005 itibariyle en çapraz tarayıcı modeli olmaya devam ediyor. İki model türü vardır: satır içi model ve geleneksel model.
satır içi model
Satır içi modelde, olay işleyicileri öğelerin nitelikleri olarak eklenir. Aşağıdaki örnekte , köprü tıklandıktan sonra "Hey Joe" mesajını içeren bir uyarı iletişim kutusu görüntülenir . Varsayılan tıklama eylemi, olay işleyicide false döndürülerek iptal edilir.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Inline Event Handling</title>
</head>
<body>
<h1>Inline Event Handling</h1>
<p>Hey <a href="http://www.example.com" onclick="triggerAlert('Joe'); return false;">Joe</a>!</p>
<script>
function triggerAlert(name) {
window.alert("Hey " + name);
}
</script>
</body>
</html>
İnline modeliyle Bir Sanıldığının onu örn özel savları tamamen olay işleyicileri kayıt sağlayan inançtır nameiçinde triggerAlertişlevi. Yukarıdaki örnekte durum böyle gibi görünse de, gerçekte olan şey, tarayıcının JavaScript motorunun , öznitelikteki ifadeleri içeren anonim bir işlev oluşturmasıdır onclick. onclickElemanın işleyici aşağıdaki anonim işlevine bağlı olacaktır:
function () {
triggerAlert('Joe');
return false;
}
JavaScript olay modelinin bu sınırlaması, genellikle olay işleyicinin işlev nesnesine nitelikler atanarak veya kapanışlar kullanılarak aşılır .
Geleneksel model
Geleneksel modelde, olay işleyicileri komut dosyalarıyla eklenebilir veya kaldırılabilir. Satır içi modelde olduğu gibi, her olayın yalnızca bir olay işleyicisi kayıtlı olabilir. Olay, öğe nesnesinin olay özelliğine işleyici adı atanarak eklenir. Bir olay işleyicisini kaldırmak için özelliği null olarak ayarlamanız yeterlidir:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Traditional Event Handling</title>
</head>
<body>
<h1>Traditional Event Handling</h1>
<p>Hey Joe!</p>
<script>
var triggerAlert = function () {
window.alert("Hey Joe");
};
// Assign an event handler
document.onclick = triggerAlert;
// Assign another event handler
window.onload = triggerAlert;
// Remove the event handler that was just assigned
window.onload = null;
</script>
</body>
</html>
Parametre eklemek için:
var name = 'Joe';
document.onclick = (function (name) {
return function () {
alert('Hey ' + name + '!');
};
}(name));
İç işlevler kapsamlarını korurlar .
DOM Düzey 2
W3C, DOM Düzey 2'de daha esnek bir olay işleme modeli tasarladı.
| İsim | Açıklama | argüman türü | argüman adı |
|---|---|---|---|
| addEventListener | Olay dinleyicilerinin olay hedefine kaydedilmesine izin verir. | DOMString | tip |
| EventListener | dinleyici | ||
| boole | kullanımYakalama | ||
| kaldırEventListener | Olay dinleyicilerinin olay hedefinden kaldırılmasına izin verir. | DOMString | tip |
| EventListener | dinleyici | ||
| boole | kullanımYakalama | ||
| sevkEtkinlik | Etkinliğin abone olunan olay dinleyicilerine gönderilmesine izin verir. | Etkinlik | evt |
Bilmeniz gereken bazı yararlı şeyler:
- Bir olayın köpürmesini önlemek için geliştiriciler
stopPropagation(), olay nesnesinin yöntemini çağırmalıdır . - Etkinliğin varsayılan eyleminin çağrılmasını önlemek için geliştiriciler
preventDefault(), olay nesnesinin yöntemini çağırmalıdır .
Geleneksel modelden temel farkı, aynı olay için birden fazla olay işleyicinin kaydedilebilmesidir. Bu useCaptureseçenek, işleyicinin köpürme aşaması yerine yakalama aşamasında çağrılması gerektiğini belirtmek için de kullanılabilir. Bu model Mozilla , Opera , Safari , Chrome ve Konqueror tarafından desteklenmektedir .
Geleneksel modelde kullanılan örneğin yeniden yazılması
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>DOM Level 2</title>
</head>
<body>
<h1>DOM Level 2</h1>
<p>Hey Joe!</p>
<script>
var heyJoe = function () {
window.alert("Hey Joe!");
}
// Add an event handler
document.addEventListener( "click", heyJoe, true ); // capture phase
// Add another event handler
window.addEventListener( "load", heyJoe, false ); // bubbling phase
// Remove the event handler just added
window.removeEventListener( "load", heyJoe, false );
</script>
</body>
</html>
Internet Explorer'a özgü model
Sürüm 8'den önceki Microsoft Internet Explorer, W3C standardının onaylanmasından önce kendi modeli oluşturulduğundan W3C modelini izlemez. Internet Explorer 9, DOM düzey 3 olaylarını takip eder ve Internet Explorer 11, Microsoft'a özel model desteğini siler.
| İsim | Açıklama | argüman türü | argüman adı |
|---|---|---|---|
| EkEtkinlik | W3C'nin addEventListener yöntemine benzer. | Sicim | sEtkinlik |
| Işaretçi | fpBildir | ||
| ayırmakEtkinlik | W3C'nin removeEventListener yöntemine benzer. | Sicim | sEtkinlik |
| Işaretçi | fpBildir | ||
| yangın etkinliği | W3C'nin sevkEvent yöntemine benzer. | Sicim | sEtkinlik |
| Etkinlik | oEventObject |
Bilmeniz gereken bazı yararlı şeyler:
- Bir olayın köpürmesini önlemek için geliştiricilerin olayın
cancelBubbleözelliğini ayarlaması gerekir . - Etkinliğin varsayılan eyleminin çağrılmasını önlemek için geliştiricilerin etkinliğin
returnValueözelliğini ayarlaması gerekir . thisAnahtar kelime küresel atıftawindownesne.
Yine, bu model, aynı olay için birden fazla olay işleyicinin kaydedilebilmesi bakımından geleneksel modelden farklıdır. Ancak bu useCaptureseçenek, yakalama aşamasında işleyicinin çağrılması gerektiğini belirtmek için kullanılamaz. Bu model, Microsoft Internet Explorer ve Trident tabanlı tarayıcılar (örn. Maxthon , Avant Browser ) tarafından desteklenmektedir.
Eski Internet Explorer'a özgü modelde kullanılan örneğin yeniden yazılması
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Internet Explorer-specific model</title>
</head>
<body>
<h1>Internet Explorer-specific model</h1>
<p>Hey Joe!</p>
<script>
var heyJoe = function () {
window.alert("Hey Joe!");
}
// Add an event handler
document.attachEvent("onclick", heyJoe);
// Add another event handler
window.attachEvent("onload", heyJoe);
// Remove the event handler just added
window.detachEvent("onload", heyJoe);
</script>
</body>
</html>
Referanslar
- Deitel, Harvey. (2002). İnternet ve World Wide Web: nasıl programlanır (İkinci Baskı). ISBN 0-13-030897-8
- Mozilla Organizasyonu. (2009). DOM Olay Referansı . 25 Ağustos 2009'da erişildi.
- Quirksmode (2008). Olay uyumluluk tabloları . 27 Kasım 2008'de erişildi.
- http://www.sitepen.com/blog/2008/07/10/touching-and-gesturing-on-the-iphone/
Dış bağlantılar
- Belge Nesne Modeli (DOM) Düzey 2 Olayları Spesifikasyonu
- Belge Nesne Modeli (DOM) Seviye 3 Olayları Çalışma Taslağı
- DOM4: Etkinlikler (Editörün Taslağı)
- UI Etkinlikleri Çalışma Taslağı
- Pointer Events W3C Aday Önerisi
- MSDN İşaretçisiEtkinliği
- domevents.dev - Keşif yoluyla DOM Olayları hakkında bilgi edinmek için bir görselleştirici
- Olay Köpürtme ve Yakalama için JS kemanı