Ng-lazyload-image: TypeError:ページを中央と上からロードするときに未定義のプロパティ 'toLowerCase'を読み取ることができません

作成日 2017年07月18日  ·  11コメント  ·  ソース: tjoskar/ng-lazyload-image

やあ、

半分下にスクロールしたページをロードすると(一番上ではなく)、ノードが「TypeError:undefinedのプロパティ 'toLowerCase'を読み取れません」というエラーを表示するバグを発見しました。 プラグインは遅延読み込みを継続するため、これによってプラグインが破損することはないようですが、新しいonLoad出力イベントは、もう一度一番上にスクロールするまで正しく発生しないようです。

再作成方法:テストページを通常どおり上部にロードします。 半分くらいになるまで下にスクロールします。 次に、ページを更新して、中央からスクロールを開始します。 ノードエラーが表示されるはずです。 そうでない場合は、onLoad出力イベントを利用していることを確認してください。 一番上までスクロールすると、onLoadイベントが突然機能し始めるのがわかります。

最も参考になるコメント

全てのコメント11件

やあ、

私はこれを再現することができません:/
「通常どおりテストページをロードする」と言うとき。 このページを意味しますか: httpsnpm startローカルでページを実行しますか?

どのブラウザを使用していますか?

github.ioで何らかの理由で、一度ロードした後、ページを更新できません。 毎回404が見つからないということです:(

しかし、一般的に、私はどのプロジェクトでもローカルを意味します-私はユニバーサルとノードでAngular 4を使用しています(したがって、ユニバーサルはこれと関係があるかもしれません)。 Chrome 59 for Windows 10の使用。これは新しいonLoad機能のバグである可能性がありますが、肯定的ではないと思います。 エラーはノードコンソールでのみ発生し、Chromeコンソールではエラーが発生しないようです。

こんにちは@elitenick
エラーの完全なスタックトレースを提供できますか?

@tjoskar
エラーはhttps://github.com/tjoskar/ng-lazyload-image/blob/master/src/lazyload-image.ts#L75に関連していると思いますが、ここまではエラーが発生しますが、そうではありません。
Angular Universalでは、 https://github.com/tjoskar/ng-lazyload-image/blob/master/src/lazyload-image.ts#L47でエラーが発生します。これは、サーバーのelementが未定義であるためです。
この問題の非常に良い解決策は、サーバー側でレイジーimgを無効にすることだと思います。

github.ioで何らかの理由で、一度ロードした後、ページを更新できません。 毎回404が見つからないということです:(

ええ、それはgithubがすべてのリクエストをindex.htmlにリダイレクトすることをサポートしていないからです(しかしそれは完全に異なる問題です)

それはおそらくAngularUniversalと関係がありますが、私が理解していないことがいくつかあります。

  1. ページを更新したときにのみエラーが発生するのはなぜですか? ノードは、スクロール位置に関する情報を取得するべきではありません。また、それが1回目または2回目の訪問であるかどうかもわかりません(バックエンドにはそのような状態があってはなりません)。
  2. 問題を引き起こしているのはこの行だとしましょう。 もしそうなら、 element 、我々がアクセスしているため、未定義することはできませんnodeNameからelementエラーなし、さらに、私たちが使用しているelementのisVisible()また、その関数ではwindowしていますが、これはサーバーコンテキストでは未定義である必要があります。

これは新しいonLoad機能のバグかもしれませんが、ポジティブではないと思います

(onLoad)ますか? それを削除して、エラーを再現できるかどうかを確認できますか?

@rimlin

この問題の非常に良い解決策は、サーバー側でレイジーimgを無効にすることだと思います。

ええ、私はサーバーに画像をレイジーロードする意味がありません(画面サイズについては何も知らないので)。
たぶん、 ngAfterContentInit if (isPlatformServer(this.platformId)) return;ref )を追加するだけです。

@ elitenick@ rimlinプルリクエストで[email protected]公開しました。 インストールして( npm install [email protected] )、問題が解決するかどうかを確認できますか?

確かに! 今日それをチェックして、あなたに知らせます! みんなありがとう。

修正されました! トンありがとう! 同じシナリオを数回再作成しましたが、ノードエラーは発生しませんでした。 そして、Angularが起動すると、遅延読み込みは引き続き機能します。

[email protected]含まれています。

このページは役に立ちましたか?
0 / 5 - 0 評価