Çözüldü TypeError: Cannot read properties of undefined (reading 'getElementsByClassName') hatası

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Stereo.Luigi99

Hectopat
Katılım
21 Ocak 2023
Mesajlar
3.433
Makaleler
6
Çözümler
67
Yer
Isparta
Daha fazla  
Cinsiyet
Erkek
Bir eklenti hazırlıyor ve JS kodlarını yazıyordum. Eklentinin düzgün çalışmasını sağladım fakat şöyle bir hata veriyor: Uncaught TypeError: Cannot read properties of undefined (reading 'getElementsByClassName')

Bu, web sitesinin ana sayfasından başka bir yere tıklayınca oluşuyor ve eklentinin çalışmasına etki etmiyor. Yine de eklentinin tam olarak hatasız çalışması için bunu çözmem gerek.

Kod alttadır, yardımlarınızı bekliyorum.
JavaScript:
// Windows 11

const Win11P = document.getElementsByClassName('node node--id314 node--depth2 node--forum node--unread')[0];
const Win11P2 = Win11P.getElementsByClassName('xfa-nit-node-icon')[0]; // Rivayete göre hatalı yer

const oldWin11 = Win11P2.getElementsByClassName('fa fab fa-windows')[0];

const newWin11 = document.createElement('img');
newWin11.id = 'win11icon';
newWin11.src = 'https://raw.githubusercontent.com/stereoDotLuigi/OS-Icons/mario/windows/win11.png';
newWin11.width = "32";
newWin11.height = "32";

Win11P2.removeChild(oldWin11);
Win11P2.appendChild(newWin11);

 
Son düzenleme:
Çözüm
Bu, web sitesinin ana sayfasından başka bir yere tıklayınca oluşuyor ve eklentinin çalışmasına etki etmiyor. Yine de eklentinin tam olarak hatasız çalışması için bunu çözmem gerek.
Aa, şimdi anladım. Ana sayfada çalışıyor, ama başka sayfalarda hata veriyor. Doğru mu?
O zaman başka sayfalardayken çalışmasını engelleyebilir veya eşleşme olmadığında kod yürütmesini durdurabilirsin.

Sayfa kontrolüne örnek olarak, window.location.href sadece https://www.technopat.net/sosyal/ olduğunda çalışmasını sağlayabilirsin.

Eşleşme olmadığında engellemek için de "Rivayet edilen satırdan" önce değişken kontrolü yapabilirsin.
JavaScript:
if (typeof Win11P !== 'undefined') {
    // Doğru yoldayız.
}
Aa ne görüyorum ben? Rivayete göre hatalı yerin sayfa yüklendiğinde çalışması gerekiyor. O şekilde çalıştırıyorsan da kodda göremiyorum, önerim onload eventini kullanman yönde.
Bütün kodu bir function içerisine alıp window.onload yaptım, düzelmedi.
Nasıl onload yapabileceğimi de anlayabilmiş değilim.
 
Bu, web sitesinin ana sayfasından başka bir yere tıklayınca oluşuyor ve eklentinin çalışmasına etki etmiyor. Yine de eklentinin tam olarak hatasız çalışması için bunu çözmem gerek.
Aa, şimdi anladım. Ana sayfada çalışıyor, ama başka sayfalarda hata veriyor. Doğru mu?
O zaman başka sayfalardayken çalışmasını engelleyebilir veya eşleşme olmadığında kod yürütmesini durdurabilirsin.

Sayfa kontrolüne örnek olarak, window.location.href sadece https://www.technopat.net/sosyal/ olduğunda çalışmasını sağlayabilirsin.

Eşleşme olmadığında engellemek için de "Rivayet edilen satırdan" önce değişken kontrolü yapabilirsin.
JavaScript:
if (typeof Win11P !== 'undefined') {
    // Doğru yoldayız.
}
 
Çözüm
Ana sayfada çalışıyor, ama başka sayfalarda hata veriyor. Doğru mu?
Doğrudur.
Kodlar çalıştı, artık hata almıyorum. Eklentinin Windows kısmını bitirdim.
İzin verilen adreslere macOS ve Linux forumunu da eklemem gerek, onun dışında sorun kalmadı.

 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…