Pek çok insanın JavaScript'te öğrendiği ilk şey bu olabilir:
alert("Hello, World");
CodePen'de bir gün, Kalemlerinin kırıldığına dair tonlarca müşteri destek bildirimiyle karşılaştık ve bu da sonuçta Chrome'un bir sürümünün kopyalandıkları yere gönderildiği anlamına geliyordu. alert()
çapraz kökenli iframe'lerde çalışmayı engelliyor. Ve diğer tüm yerel “JavaScript İletişim Kutuları” gibi confirm()
, prompt()
ve başka ne olduğunu bilmiyorum (onbeforeunload
?, .htpasswd
korunan varlıklar?).
Çapraz kökenli iframe'ler aslında bu yöntemin kalbidir. CodePen İşler. Siz kodu yazarsınız ve biz bunu sizin için, güvenlik savunmasının ilk satırı olarak CodePen'in kendisi ile aynı etki alanını paylaşmayan bir iframe'de yürütürüz. Herhangi bir uyarı falan duymadık ama eminim planlar sergilendi.
Tweetledim dehşetten. Burada potansiyel güvenlik endişelerinin olduğunu anlıyorum. JavaScript diyalogları aynı görünmek bir iframe tarafından tetiklenip tetiklenmedikleri, dolayısıyla bir iframe tarafından, özellikle de ana sayfanın muhtemelen çok az kontrole sahip olduğu bir çapraz köken iframe tarafından tetiklendikleri zaman en iyi ihtimalle kafa karıştırıcı oluyor. CodePen gibi bir web sitesinin dışında. Chrome, performans kaygılarından da bahsediyor; çünkü bu JavaScript diyaloglarının doğası, açıldığında ana iş parçacığını bloke etmeleri ve bu da aslında her şeyin durmasına neden oluyor.
Yine de iframe'lerden kaynaklanabilecek her türlü güvenlik ve kullanıcı deneyimi rahatsızlığı sorunu var. Bu yüzden korumalı alan oluşturma bir şeydir. Bunu yapabilirim:
<iframe sandbox></iframe>
Ve o enayi kilitlendi. Eğer bir form oraya bir şey göndermeye çalıştıysa: Hayır, işe yaramayacak. Bir indirmeyi tetiklemeye çalışırsa ne olur? Hayır. Cihaz erişimi istensin mi? Mümkün değil. Herhangi bir JavaScript bile yükleyemiyor hiç. Ben izin vermediğim sürece:
<iframe sandbox="allow-scripts allow-downloads ...etc"></iframe>
Peki neden JavaScript diyalogları için bir özellik olmasın? İronik olarak, zaten bir tane var: allow-modals
. Bunun neden yeterince iyi olmadığından tam olarak emin değilim, ancak anladığım kadarıyla çapraz kaynaklı iframe'lerde JavaScript diyaloglarını iptal etmek, nihai hedefe giden yolda yalnızca bir basamaktır: bunları web platformundan tamamen kaldırmak.
Daaaaang. Baştan sona? Kelime bu. Tamamen bozulacak programlama derslerinin sayısını hayal edin.
Şimdilik, çapraz kökenlerin kaldırılması bile Ocak 2022'ye ertelendi, ancak bildiğimiz kadarıyla bu devam edecek ve daha sonra bunları tamamen kaldırmak için sonraki adımlar atılacak. Bu Chrome'un öncülük ettiği, fakat durum raporları her ikiside Firefox ve Safari de bu değişikliğe katılıyor. Ayrıca bu belirtilen değişiklik, yani eğer siz de benim gibi bunun pek iyi yönetilmediğini düşünüyorsanız, sanırım burada kelimenin tam anlamıyla parmaklarımızı her yerde oynatabiliriz.
Şu ana kadar bize anlatılanlar, çözümün kullanılmasıdır. postMessage
eğer gerçekten kesinlikle ihtiyaç Bu işlevselliği çapraz kökenli iframe'ler için korumak için. Bu, kullanıcının kullandığı dizeyi gönderir window.alert
ana sayfaya kadar gider ve uyarıyı oradan tetikler. Buranın en büyük hayranı değilim çünkü:
postMessage
JavaScript diyalogları gibi engellemiyor. Bu uygulama akışını değiştirir.- Bunun için kullanıcı koduna kod enjekte etmem gerekiyor. Bu yeni bir teknik borçtur ve beklenen kullanıcı çıktısı beklentilerine zarar verebilir (örn.
<script>
HTML'lerinde garip çıkarımlar var;:nth-child
ve arkadaşlar seçer). - Genelde geçme konusunda endişeliyim bir şey yürütülecek bir ebeveyn için kullanıcı tarafından oluşturulur. Eminim bunu güvenli bir şekilde yapmanın teorik yolları vardır, ancak XSS saldırı vektörleri yaratıcılıkları açısından her zaman şaşırtıcıdır.
Daha düşük anahtarlı öneriler bile window.alert = console.log
, aslında aynı sorunlara sahip.
Görüşleri için mikrofonu başkalarına vermeme izin verin.
Uyarı ana pencerede görünmek yerine iframe'de bulunamaz mı?
Jaden Baptista, Twitter
Evet lütfen! Bu, sorunun büyük bir kısmını çözmüyor mu? Bu diyalogların kullanıcı deneyimini daha kullanışlı hale getirirken? Tehlikeli diyalogları koy içeride the <iframe>
.
"Ağı kırmayın." "Web'in %90'ını kırmayın." ve şimdi de "İçeriğiyle aynı fikirde olduğumuz interneti bozma."
Matthew Phillips, Twitter
Tarihsel hatalar olarak görülebilecek ve uygulama karmaşıklığına neden olan [HTML spesifikasyonunun] uygunsuz kısımlarından kurtulma arzusuna saygı duyuyorum, ancak mevcut kullanım durumlarına çok az saygı veya merakla yaklaşıldığı hissinden kurtulamıyorum .
Dan Abramov, Twitter
Bunun JavaScript spesifikasyonunun değil, HTML spesifikasyonunun bir parçası olması bana tuhaf geliyor. Sağ?!
Her zaman interneti kırmamak için bir tür "temel direktif" olduğunu düşünmüşümdür? Kelimenin tam anlamıyla kullanılan web tabanlı oyunlar gördüm
alert
Bir özellik olarak engelleme doğasından yararlanan bir "duraklatma" olarak. Beğenmek:<button onclick="alert('paused')">Pause</button>
[.] Komik ama gerçek.Ben Lesh, Twitter
Tüm sayfa görüntülemelerinin yalnızca %0.006'sının bu işlevleri kullanan bir çapraz kaynak iframe içerdiğini belirten bir ölçümden alıntı yapıldı:
Gibi bir şey için yanıltıcı bir ölçüm gibi görünüyor
confirm()
. Örneğin. hesap silme akışı kullanılıyorsaconfirm()
ve değişiklik nedeniyle kesintiye uğraması, hesap silme akışının önemli olmadığı anlamına gelmez. Bu sadece insanların her oturumda ona vurmadıkları anlamına gelir.Dan Abramov, Twitter
Benim için daha önemli olan şey şu: alert()
bir şeydir, ama confirm()
kelimenin tam anlamıyla geri döner true
or false
yani bir programdaki mantıksal kontrol yapısıdır. Bunu kaldırmak web sitelerini bozar, hiç şüphe yok. Chris Ferdinandi bana bunu kullanan küçük, bilinmeyen bir web sitesini gösterdi:
Chris'ten bahsetmişken:
Küçümseyen "gerçekten okudun mu, çok açık" nakaratı AF'yi küçümsemektir. Geliştirici belgelerinde "sadece" veya "basitçe" ifadesinin eşdeğeridir.
Onu okurum. Anlamadım. Bu yüzden asıl işi geliştiricilerle iletişim kurmak olan birine Chrome'un platformda yaptığı değişiklikler hakkında sorular sordum.
Bu, Chrome'daki tek bir geliştiriciye özgü değildir. Bu değişikliğin ortaya çıktığı mesaj dizisinin tamamı, her şeyi bozacağı için Chrome'a bu teklifte ilerlememesi için yalvaran insanlarla dolu.
Chris Ferdinandi, “Google ve web”
Ve işte Jeremy:
[…] değişiklikleri bozuyor değil mi internette sıklıkla olur. Nadirdirler ve öyle olmalıdırlar. Eğer bu değişecek olsaydı, web açısından büyük zarar görürdü. öngörülebilirlik.
İkincisi, sorumluluk değil kullanımdan kaldırılma tehlikesiyle karşı karşıya olan eski özellikleri takip etmek için web geliştiricilerine. Bu tarayıcı yapımcılarının elinde. İçtenlikle umarım adlı bir siteye başvurmamız beklenmez.
canistilluse.com
.Jeremy Keith, “Temeller”
Burada oldukça kasvetli bir tablo çizdim. Adil olmak gerekirse, bazı tweetler vardı. Evet!! Nihayet!! havası vardı, ancak bunlar bana Google'ın rastgele amigo kızları kadar eleştirel değerlendirmeler gibi gelmedi.
İster inanın ister inanmayın, genellikle am Google hayranıyım ve web'i ileriye taşımak konusunda iyi bir iş çıkardıklarını düşünüyorum. Ayrıca sorunları gördüğümde ve onlardan daha iyisini yapmalarını istediğimde parmak sallamanın uygun olduğunu düşünüyorum. Buradaki “Daha iyi” şu anlama gelir yol durumu açıklamak için daha fazla geliştirici ve kullanıcı desteği, yol potansiyel çıkarımlar ve geçiş fikirleri hakkında daha fazla konuşma ve yol Rotayı ileriye doğru yönlendirmek için daha fazla açıklık.
Kaynak: https://css-tricks.com/choice-words-about-the-upcoming-deprecation-of-javascript-dialogs/
- erişim
- Hesap
- Türkiye
- Uygulama
- Varlıklar
- Biggest
- yazı tahtası
- tarayıcı
- durumlarda
- Sebeb olmak
- CGI
- değişiklik
- krom
- kod
- içerik
- konuşma
- merak
- Kullanıcı Desteği
- gün
- Borç
- Savunma
- Geliştirici
- geliştiriciler
- vb
- adil
- Özellikler(Hazırlık aşamasında)
- Özellikler
- Ad
- akış
- Airdrop Formu
- ileri
- komik
- Games
- Tercih Etmenizin
- okuyun
- Ne kadar
- HTTPS
- sorunlar
- IT
- JavaScript
- İş
- ÖĞRENİN
- çizgi
- yük
- Yapımı
- hareket
- mozilla
- açık
- Görüşler
- Diğer
- Diğer
- İnsanlar
- performans
- resim
- platform
- Programı
- Programlama
- öneri
- İade
- Safari
- güvenlik
- paylaş
- So
- ÇÖZMEK
- Durum
- destek
- Teknik
- ton
- iz
- Öğreticiler
- kullanıcılar
- ux
- ağ
- Web geliştiricileri
- Web sitesi
- web siteleri
- sözler
- İş
- çalışır
- Dünya
- XSS