HTML tagları üzerinden onload, onclick gibi JS eventlerini çağırmak doğru bir yaklaşım değil. Neden? Eskiden kullanılan genel ve düz mantık bugün geriye dönük uyumluluk adı altında hala kullanılabilir ama güncel ihyiaçları karşılamak için yeterli değil. Burada anahtar kelimen Event Listener/Handler.
Hatana bakacak olursak "...is not defined..." diye bir ibare varsa tanımlanmamış içerik ya gerçekten tanımlı değil ya da daha yüklenmemiştir. Sayfa yüklenirken body'den onload tetikleniyor ama sayfanın altındaki JS kodları daha yüklenmediği için hata veriyor olabilir. Burada Global Event Handlers konusuna bakman gerekiyor. Linkteki window.onload eventinde ilk tetiklemeyi yapabilirsin.
Bu yetmez, ilk önce JSON.parse dediğin şeyi, localStorage'dan gelen veriye bir bak. İf ile null mu, empty mi, geçersiz bir JSON içeriği mi vs, belkide bir eklenti veya kullanıcı kurcalamıştır. Sonra bir döngün var, orada da e.href demişsin, null mu değil mi, hatta özel bir şey bekliyorsan (burada link bekliyorsun) onu Regex ile bir kontrol et.
Kodlarından anlaşılıyor ki OOP bilgin çok zayıf, OOP ve DOM konularına birkaç haftanı ayır yoksa Frameworkler'de daha fazla vakit kaybedersin.