Giter Club home page Giter Club logo

fukuchancat / qiita-scroll-sync Goto Github PK

View Code? Open in Web Editor NEW
6.0 2.0 1.0 23 KB

Qiitaの投稿画面のエディタ(左)・プレビュー(右)の同時スクロールを改善し、各見出しを基準にスクロール位置を合わせるようにするユーザースクリプトです。

Home Page: https://qiita.com/m_fukuchan/items/2a0c1f7b45894449ff56

JavaScript 100.00%
javascript greasemonkey tampermonkey userscript greasemonkey-userscript tampermonkey-userscript qiita scroll

qiita-scroll-sync's Issues

[bug]スクロール同期がずれる

編集中の記事の最初に見出しが存在する場合において, プレビュー側の見出しが 1 つずれるという状況が発生しました.

調査したところ, 最初に見出しが存在する場合に x 座標側が [0, 0, ...] と始まるようになっているにもかかわらず, y 座標側は [0, 0, ...] と始まらないため座標の要素の対応がおかしくなっています.

y 座標のデータを計算する部分も, 最初に見出しが存在する場合は先頭に 0 を挿入するように修正する必要があるようです.

[bug]現在の QIita では class が違うため動作しない

現在の Qiita では DOM 要素の class 指定が変わっているため, スクリプト内での querySelector 呼び出しが null を返すために動作しません.

当該部分を直そうとしてみましたが, querySelector 部分を直すだけでは以下の問題も発生して改善しなかったため PR ではなく Issue として立てます.

  • Markdown プレビューが読み込まれるタイミングが DOMContentLoaded より後のタイミングになったため, 編集画面を開いてこのスクリプトが読み込まれてから一旦再読み込みをしない限り, プレビュー側の要素を取得できずにスクリプトが動作しない.
  • 最初に見出しが存在する場合に y 座標側は [0, 0, ...] と始まらないためプレビュー側の見出しが 1 つずれる.

querySelector の部分のみの修正を PR として作成した後に, 上記を別々の issue へと分けようかと考えています. どういたしましょうか?

[bug]多くの状況で動作しない

Markdown プレビューが読み込まれるタイミングが DOMContentLoaded より後の非同期なタイミングになりました.

この変更の影響で, 編集画面を開いてこのスクリプトが読み込まれてもプレビュー側の要素を取得できず正常に動作しません. 一旦再読み込みをすれば, タイミングによっては動作します.

なんらかの手段でプレビューの読み込みを待つように修正する必要があります.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.