Ng-lazyload-image: TypeError: Tidak dapat membaca properti 'toLowerCase' yang tidak ditentukan saat memuat halaman dari tengah vs atas

Dibuat pada 18 Jul 2017  ·  11Komentar  ·  Sumber: tjoskar/ng-lazyload-image

Hai, yang di sana,

Saya menemukan bug di mana jika Anda memuat halaman yang digulir ke bawah (vs di bagian paling atas), Node memberikan kesalahan "TypeError: Cannot read property 'toLowerCase' of undefined". Ini sepertinya tidak merusak plugin karena terus memuat dengan lambat, namun acara keluaran onLoad yang baru tampaknya tidak menyala dengan benar sampai Anda menggulir kembali ke bagian paling atas lagi.

Cara membuat ulang: Muat halaman pengujian Anda seperti biasa, di bagian atas. Gulir ke bawah sampai Anda sekitar setengah jalan. Sekarang segarkan halaman dan mulailah menggulir dari tengah. Anda akan melihat kesalahan simpul. Jika tidak, pastikan Anda menggunakan event keluaran onLoad. Jika Anda menggulir ke bagian paling atas, Anda akan melihat acara onLoad mulai bekerja secara tiba-tiba.

Komentar yang paling membantu

Semua 11 komentar

Hai,

Saya tidak dapat mereproduksi ini :/
Saat Anda mengatakan "Muat halaman pengujian Anda seperti biasa". Maksud Anda halaman ini: https://tjoskar.github.io/ng-lazyload-image atau apakah Anda menjalankan halaman secara lokal dengan npm start ?

Peramban apa yang Anda gunakan?

Untuk beberapa alasan di github.io saya tidak dapat menyegarkan halaman setelah memuatnya sekali. Dikatakan 404 tidak ditemukan setiap saat :(

Tetapi secara umum, maksud saya secara lokal dengan proyek apa pun - saya menggunakan Angular 4 dengan Universal dan Node (jadi universal mungkin ada hubungannya dengan ini). Menggunakan Chrome 59 untuk Windows 10. Saya pikir ini mungkin bug dengan fungsi onLoad baru tetapi tidak positif. Kesalahan hanya muncul di konsol Node, sepertinya tidak membuat kesalahan muncul di konsol Chrome.

Hai @elitenick ,
Bisakah Anda memberikan jejak kesalahan tumpukan penuh?

@tjoskar
Saya pikir kesalahan itu terkait dengan https://github.com/tjoskar/ng-lazyload-image/blob/master/src/lazyload-image.ts#L75 , sebelum di sini akan menangkap kesalahan, tetapi karena tidak.
Di Angular Universal di sini https://github.com/tjoskar/ng-lazyload-image/blob/master/src/lazyload-image.ts#L47 menghasilkan kesalahan, karena element di server tidak ditentukan.
Saya pikir, solusi masalah yang cukup bagus adalah menonaktifkan img malas di sisi server.

Untuk beberapa alasan di github.io saya tidak dapat menyegarkan halaman setelah memuatnya sekali. Dikatakan 404 tidak ditemukan setiap saat :(

Ya, itu karena github tidak mendukung untuk mengarahkan semua permintaan ke index.html (tapi itu masalah yang sama sekali berbeda)

Ini mungkin ada hubungannya dengan Angular Universal tetapi ada beberapa hal yang saya tidak mengerti:

  1. Mengapa Anda hanya mendapatkan kesalahan saat menyegarkan halaman? Node seharusnya tidak mendapatkan informasi apa pun tentang posisi gulir atau jika ini adalah kunjungan pertama atau kedua Anda (backend tidak boleh memiliki status semacam itu).
  2. Katakanlah baris inilah yang menyebabkan masalah. Jika demikian, element tidak dapat di-undefined karena kami mengakses nodeName dari element tanpa kesalahan dan selanjutnya, kami menggunakan element di isVisible() dan kami bahkan menggunakan window dalam fungsi itu, yang seharusnya tidak ditentukan dalam konteks server.

Saya pikir ini mungkin bug dengan fungsi onLoad baru tetapi tidak positif

Apakah Anda menggunakan (onLoad) ? Bisakah Anda mencoba menghapusnya dan melihat apakah Anda dapat mereproduksi kesalahan?

@rimlin

Saya pikir, solusi masalah yang cukup bagus adalah menonaktifkan img malas di sisi server.

Ya, saya tidak masuk akal untuk melakukan lazyload gambar di server (karena kami tidak tahu apa-apa tentang ukuran layar).
Mungkin kita bisa menambahkan if (isPlatformServer(this.platformId)) return; ( ref ) di ngAfterContentInit .

@elitenick , saya baru saja menerbitkan [email protected] dengan @rimlin pull request. Bisakah Anda menginstalnya ( npm install [email protected] ) dan melihat apakah itu menyelesaikan masalah?

Tentunya! Akan memeriksanya hari ini dan memberi tahu Anda! Terima kasih teman-teman.

Sudah diperbaiki! Terima kasih banyak!! Membuat ulang skenario yang sama beberapa kali dan tidak ada lagi kesalahan Node. Dan pemuatan malas terus bekerja setelah Angular masuk.

Termasuk dalam [email protected] .

Apakah halaman ini membantu?
0 / 5 - 0 peringkat