Καλωσορίσατε, επισκέπτη!

Φαίνεται πως έρχεστε για πρώτη φορά εδώ. Αν θέλετε να συμμετέχετε, πάτησε ένα από αυτά τα πλήκτρα!

※解決済み※v2.4.11にてマイリストでサムネイルが表示されないことがある

About: ZenzaWatch DEV版
ytyt
επεξεργάστηκε September 15 σε Συζητήσεις κώδικα [?]

2.4系になってから一部のマイリスト(ZenzaWatchのプレイリストではなくニコニコのページ上)で動画のサムネイルがすべて表示されません。
(サムネイルのimgタグのsrcがx.gifのまま、かつ、classにjsLazyImageが残ったままになっている)

サムネイルが表示されないマイリストの例: mylist/66051420, mylist/66260782
サムネイルが表示されるマイリストの例: mylist/63274985, mylist/53201512
「最近の動画しか登録されていない」「登録されている件数が少ない」が条件のような気がします。

動作しないバージョン: 2.4.0, 2.4.11, 2.4.15
動作するバージョン: 2.3.2
検証環境: Chromium 76 + Tampermonkey v4.8.41, Firefox 69 + Tampermonkey 4.9.5941

Σχόλια

  • リロードしているうちに表示されて Ctrl-F5でまた表示されなくなるので、
    レースコンディションっぽい感じはします。
    表示されるページとされないページでコンソールにエラーや警告での違いはなしです。

  • ytyt
    επεξεργάστηκε September 14 [?]

    古い動画をひとつだけ登録したマイリストを作成したところ発生したので、件数(=処理時間)が条件のようです

  • Nico.LazyImageをoverrideしている処理に原因があるとわかったので調査しました。
    LazyImage.reset()this.initialize(); を呼んでいないことが本来のLazyImageと比較しての原因です。

    Object.assignしている各メソッドの先頭にconsole.logを仕込んで実行した結果は以下のとおりです。

    動作しないページ

    addEventListener DOMContentLoaded: override Nico.LazyImage
    override Nico.LazyImage...
    Nico.LazyImage.reset
    

    動作するページ

    addEventListener DOMContentLoaded: override Nico.LazyImage
    override Nico.LazyImage...
    Nico.LazyImage.reset
    Nico.LazyImage.enqueue
    Nico.LazyImage.initialize
    Nico.LazyImage._setPageObserver
    Nico.LazyImage.enqueue
    Nico.LazyImage._loadImage
    

    mylist2.jsの Nico.LazyImage.reset(); を呼んでいる箇所周辺を読むと、
    マイリスト件数が10件以下だとaddImageする処理を通らないので
    imagesが空になり Nico.LazyImage.enqueue(images) が呼ばれないことがわかります。
    その結果、Nico.LazyImage.initialize() が呼ばれずjsLazyImageの差し替え処理が走りません。

    overrideが呼ばれたタイミングではまだ本来のLazyImageもinitializeが呼ばれていないため
    override中に LazyImage.initialize(); が呼ばれることもありません。

  • 自分は投稿動画のサムネイルがすべて表示されません

  • ytyt
    επεξεργάστηκε September 15 [?]

    2.4.19でマイリストの正常動作を確認しました。ありがとうございます。
    当初の症状が解決したのでこちらのスレッドは解決済みとさせていただきます。

    azumukupoeさん
    こちらでは確認できませんでした。別の発生メカニズムによるものだと思いますので
    最新版で発生しているようなら環境の情報を添えて新たにスレッドを作成されるのが良いと思います。

Συνδεθείτε ή Εγγραφείτε για να σχολιάσετε.