Belge ve pencere nesne ebeveynin iki biz JavaScript ile erişebilmesini nesneleri vardır. Belge nesnesinin kendisi, pencere nesnesine tabidir. Bence herkes onları tanıyor, çünkü özellikle vanilya javascript ile web uygulamaları geliştirirken her yerde mevcutlar.
Bu makale size her ikisinin de bazı pratik özelliklerini göstermeyi amaçlamaktadır. Bu ikisinin tam olarak ne olduğuna dair daha detaylı bir girişe gerek yok, şimdi size çok fazla bilgi sahibi olmadan kullanabileceğiniz bazı pratik örnekler vereceğim.
İçerik menüsü içerik menüsü istediği belirtildi DOM öğesinin bir kullanıcı sağ tıklama tetiklenir DOM olay vardır. Bağlam menüsü, birazdan yapacağımız gibi, web sayfası olayı farklı şekilde işlemediği sürece, bir kullanıcı bir web sayfasına sağ tıkladığında varsayılan olarak görüntülenen menüdür. Adı bilinmese de küçük menü işletim sistemine bağlı olarak farklı görünüyor ve “resmi farklı kaydet”, “incele”, “yeniden yükle” ve “geri” gibi şeyler sunuyor.
Temel olarak,
contextmenukullanıcı sağ tıkladığında kendi eylemimizi gerçekleştirmek için DOM'deki olayı kullanabiliriz .
<div id=”nocontext”>No context menu available for this</div> <script> noContext = document.getElementById(‘nocontext’) noContext.addEventListener(‘contextmenu’, (event) => { event.preventDefault() }) </script>
Varsayılan durum, içerik menüsüne sağ tıklamak gibidir. Ancak önlemeDefault ile bunu engelleriz. Yani hiçbir şey olmuyor.
Elbette sadece standart olayı engelleyemiyoruz, aynı zamanda kullanıcı sağ tıkladığında her türlü kodu çalıştırabiliyoruz. Daha sonra, kendi bağlam menümüzü sunmak için bunu önlemeDefault ile birleştirebiliriz, örneğin:
contextAvailable.addEventListener(‘contextmenu’, (e) => { console.log(‘you rightclicked this’) e.preventDefault() })
Bu makalenin araştırmasına kadar bu benim için tamamen bilinmiyordu, ancak aslında bu özellik çok pratik olabilir. Örneğin bir içerik yönetim sistemi için veya bir web sitesinde olası içerik değişikliklerini görselleştirmek için kod olmadan hızlı bir şekilde düzenlemek için kullanabilirsiniz.
Çünkü designMode'un mümkün kıldığı şey, tarayıcıda baktığımız bir web sitesinin tüm içeriğini devtools'un HTML kodunu değiştirmek zorunda kalmadan düzenleyebilmenizdir.
Hemen şimdi deneyebilirsiniz. Herhangi bir web sitesine gidin, konsolu açın ve şunu girin:
document.designMode = "on"
Artık görüntülenen web sitesini bir Word belgesiymiş gibi düzenleyebilirsiniz. Oldukça havalı, ha? DesignMode : Sadece iki durumu tanır ve kapatmak . Bu nedenle, devre dışı bırakmak istiyorsanız, aşağıdakileri yapmanız yeterlidir:
document.designMode = "off"
Tek tek öğeleri içeriği değiştirmekten korumak istiyorsanız, onlara şu özelliği verebilirsiniz: (O zaman onları yalnızca tamamen kaldırabilirsiniz , ancak değiştiremezsiniz )
<i contenteditable = "false">This is not editable.</i>
Başlangıçta, iyi bilinen document.execCommand() bu amaç için tasarlanmıştı, ancak bu artık kullanımdan kaldırılmış olarak kabul ediliyor.
Bunun yerine, JavaScript kullanılarak içeriğin otomatik olarak kopyalanması için Pano API'si artık kullanılabilir. Pencere nesnesine bağlı olan gezgin nesnesi
aracılığıyla kullanılabilir .
Düğmeye bastıktan sonra giriş alanına girilen metni panoya kopyaladığımız bir örneğe bakalım:
Özellikle daha karmaşık ve performansı optimize edilmiş web uygulamalarının geliştirilmesi için, potansiyel zayıf noktaları bulmak veya performansı ve UX'i iyileştirmek için yükleme süresi ve belgenin genel davranışına ilişkin araştırmalar yapılmalıdır.
Bu nedenle, document.readyState ile belgenin mevcut durumuna erişebilir ve sonuca göre daha fazla karar verebiliriz.
Document.readyState'in döndürebileceği olası sonuçlar şunlardır :
İşte, kronolojik sırayla, web sitemizin günlüğe kaydettiği şey:
Bu nedenle, durumu onload olayıyla birlikte çıkarırsak, her durumda durum "tamamlandı".
Düğmeler, girdiler ve metin alanları gibi web sitesi kullanıcısının gerçekten etkileşimde bulunabileceği öğeler söz konusu olduğunda, bunlar sözde odak olabilir. Odak bir girdiye sahipse ve klavyeye bir şey yazarsak, girdi alanına yazılır. Alanda odak yoksa giriş alanına yazılmaz. Bence herkes odak noktasının ne olduğunu biliyor.
Belki de bir öğenin odağı aldığı olay olan onfocus niteliğini zaten biliyorsunuzdur . Sonra onu harika CSS animasyonları oluşturmak için kullanabiliriz veya kullanıcı davranışını analiz etmek istiyorsak bu olayı kaydedebiliriz.
Aynı şekilde, tüm öğelere onfocus niteliğini vermek zorunda kalmadan hangi öğenin odakta olduğunu belirleyebiliriz .
Bunu şu şekilde yapabiliriz:
var x = document.activeElement.id console.log(x)
Özellikle UX ile ilgili olarak, bazen kullanıcıyı eleman seçmekten kurtarmak yardımcı olabilir. Örneğin, bir formda yanlış bir giriş yaptıysa ve girişini her giriş alanında değiştirmesini istiyorsak:
document.getElementById(‘input1’).focus()
Büyük ve dinamik web uygulamalarında, DOM'daki herhangi bir öğenin etkin stilini sürekli olarak değiştiririz.
Bunu herhangi bir zamanda ikiye de çıkarabiliriz, bu nedenle öğelerimizin hangi CSS özniteliklerine ve değerlerine sahip olduğunu kontrol edin.
element.stylestilleri okumak için de kullanılabilir, ancak onları düzenlemek için tasarlanmıştır
Window.getComputedStyle()mevcut stili elde etmek için yapılmıştır
let box = document.getElementById(‘box’) console.log(window.getComputedStyle(box)) // CSSStyleDeclaration{}
let box = document.getElementById(‘box’) console.log( window.getComputedStyle(box) .getPropertyValue(‘background-color’) // E.g. rgb(0, 128, 0) )
Elbette modern web geliştirmede boyutları aşmak yok. İşte ihtiyacınız olan:
window.outerWidth
window.outerHeight
Bu nedenle, web sitesinin şu anda hangi boyutlarda görüntülendiğini gerçekten belirlemeye gelince, aşağıdaki işlevler kullanılabilir:
window.innerWidth
window.innerHeight
elem.style.width = window.innerWidth + ‘px’
Üç yeni yayın başlattık! Takip ederek yeni yayınlarımıza biraz sevgi gösterin: AI in Plain English , UX in Plain English , Python in Plain English — teşekkürler ve öğrenmeye devam edin!
Ayrıca her zaman kaliteli içeriğin tanıtımına yardımcı olmakla ilgileniyoruz. Yayınlarımızdan herhangi birine göndermek istediğiniz bir makaleniz varsa, bize Medium kullanıcı adınızı ve gö[email protected] adresine bir e-posta gönderin, sizi yazar olarak ekleyelim. Ayrıca hangi yayına/yayınlara eklenmesini istediğinizi bize bildirin.
Bilinç nedir? Yüzyıllardır filozofların ve bilim adamlarının kafasını karıştıran bir sorudur. Bazıları bunun bedenlerimizden bağımsız olarak gerçekten anlayamadığımız geçici bir şey olduğunu söylüyor.
Yıllık ortalama 154 bin dolar maaş ve istikrarlı iş büyümesi ile şimdi blok zinciri geliştirmeyi öğrenmek için ideal zaman. Blok zinciri teknolojilerini oluşturmak ve geliştirmek için blok zinciri geliştiricileri, bilgisayar ağı, kriptografi, algoritmalar ve veri yapıları dahil olmak üzere çeşitli beceriler kullanır.
DFK Düello Güncellemesi — 21 Mayıs 2022 Gaia'nın huzuru sizi rahatlatsın! DeFi Kingdoms Geliştirme Güncellemesinin başka bir sayısında, geliştirici ekibin bu hafta yaşadığı zorlukların hikayelerini sunuyoruz! DFK Düellosu pazarda (tam anlamıyla) köşede ve yakında oyuncular krallıkta yeni bir yüzle, oyun ustasıyla konuşabilecek ve en iyi kahramanlarını Düellolara gönderebilecekler! Düellolar 1, 3 veya 9 Kahramanlık gruplar halinde ve her seviye için farklı ödül seviyelerinde yapılabilir. Maçları kazandıkça puanınız artacak ve her zamankinden daha zorlu rakiplerle karşı karşıya geleceksiniz.
Büyük şehirde (Harare) kalmak eskisi gibi değil. Bir şey varsa, çok abartılıyor.
Barter ticaretini duydunuz mu? Para veya kredi kartı gibi parasal bir araç kullanmadan iki veya daha fazla taraf arasında mal veya hizmet ticareti yapma eylemidir. Birkaç yıl önce kitap yazmayı ve yayınlamayı ve podcasting'i öğrenmekle ilgileniyordum.
5…4…3…2…1. Tüm sınıfı etkilemek için aptalca bir şakayı mükemmelleştirmeye çalışan bir çocuk gibi bu sayıları içimden okudum.