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:
  • fare aşağı
  • fare yukarı
  • Tıklayın
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:

  1. Yakalama aşaması: olay, kök olay hedefinden bir olayın hedefine doğru iner.
  2. Hedef aşaması: olay, olay hedefinden geçer
  3. 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çin true(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.

Etkinlik özellikleri
İ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.
Olay yöntemleri
İ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ıfta windownesne.

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

Referanslar