#5 Whitespace is sometimes lost when text containing whitespace is pasted into queetbox.

Fermé
Créé il y a 1 an par the_quick_fox · 9 commentaires

queetboxに空白を含む文章をペーストすると、テキストの空白のいくつかが失われる。 これはHTMLが空白を無視する時の規則とほとんど同様であり、

  • 行頭の空白は無視される
  • 単語間の空白は1文字として扱われる
  • 行末の空白は1文字として扱われる のように変換され、結果空白の情報が失われる。

参考サイト https://developer.mozilla.org/ja/docs/Web/API/Document_Object_Model/Whitespace

queetboxに空白を含む文章をペーストすると、テキストの空白のいくつかが失われる。 これはHTMLが空白を無視する時の規則とほとんど同様であり、 - 行頭の空白は無視される - 単語間の空白は1文字として扱われる - _行末の空白は1文字として扱われる_ のように変換され、結果空白の情報が失われる。 参考サイト https://developer.mozilla.org/ja/docs/Web/API/Document_Object_Model/Whitespace
the_quick_fox a commenté il y a 1 an
Publier

一番簡単な解決方法としてはqvitter.jsのstripHtmlFromPaste()関数

function stripHtmlFromPaste(e) {
    e.preventDefault();
    var text = replaceHtmlSpecialChars(e.clipboardData.getData("text/plain"));
-   text = text.replace(/\n/g,'<br>').replace(/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;'); // keep line-breaks and tabs
+       text = text.replace(/\n/g,'<br>').replace(/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;').replace(/ /g, '&nbsp;'); // keep line-breaks and tabs

    document.execCommand("insertHTML", false, text);
    }

のように変更して、空白も明示的に&nbsp;に置換することだと思います。

一番簡単な解決方法としては[qvitter.jsのstripHtmlFromPaste()関数](https://notabug.org/gnusocialjp/Qvitter/src/main/js/qvitter.js#L3201)の ```diff function stripHtmlFromPaste(e) { e.preventDefault(); var text = replaceHtmlSpecialChars(e.clipboardData.getData("text/plain")); - text = text.replace(/\n/g,'<br>').replace(/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;'); // keep line-breaks and tabs + text = text.replace(/\n/g,'<br>').replace(/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;').replace(/ /g, '&nbsp;'); // keep line-breaks and tabs document.execCommand("insertHTML", false, text); } ``` のように変更して、空白も明示的に`&nbsp;`に置換することだと思います。
senooken a commenté il y a 1 an
Propriétaire

ありがとうございます。こちらの修正で昨晩確認して問題なさそうなことを確認しました。 よければその修正でPull Requestも作成してみてください。 あなたの修正をマージした後、こちらでテストコードを追加したりします。テストコード追加は少々時間がかかって難しそうなのでこちらで行います。

ありがとうございます。こちらの修正で昨晩確認して問題なさそうなことを確認しました。 よければその修正でPull Requestも作成してみてください。 あなたの修正をマージした後、こちらでテストコードを追加したりします。テストコード追加は少々時間がかかって難しそうなのでこちらで行います。
the_quick_fox a commenté il y a 1 an
Publier

このリポジトリをcloneしてdevelopから新しいbranch生やして、そのbranchをpushしようとしたんですけど以下のエラーがでます。

error: RPC failed; HTTP 403 curl 22 The requested URL returned error: 403
send-pack: unexpected disconnect while reading sideband packet
fatal: the remote end hung up unexpectedly
Everything up-to-date

この場合はどうしたら良いでしょうか。

このリポジトリをcloneしてdevelopから新しいbranch生やして、そのbranchをpushしようとしたんですけど以下のエラーがでます。 ``` error: RPC failed; HTTP 403 curl 22 The requested URL returned error: 403 send-pack: unexpected disconnect while reading sideband packet fatal: the remote end hung up unexpectedly Everything up-to-date ``` この場合はどうしたら良いでしょうか。
senooken a commenté il y a 1 an
Propriétaire

うーん、わかりません。notabug側の不調な気がします。時間を空けて試してみてください。 あと、派生元はmainブランチでお願いします。こちらのdevelopブランチはけっこう前に消し忘れたブランチだったと思います。後で不要なリモートブランチは削除しておきます。

うーん、わかりません。notabug側の不調な気がします。時間を空けて試してみてください。 あと、派生元はmainブランチでお願いします。こちらのdevelopブランチはけっこう前に消し忘れたブランチだったと思います。後で不要なリモートブランチは削除しておきます。
the_quick_fox a commenté il y a 1 an
Publier

承知しました。mainから生やしてみます。

承知しました。mainから生やしてみます。
the_quick_fox a commenté il y a 1 an
Publier

pull requestを作りました。マージ先はmainで大丈夫でしょうか?

pull requestを作りました。マージ先はmainで大丈夫でしょうか?
senooken a commenté il y a 1 an
Propriétaire

ありがとうございます。mainでOKです。夕方に確認して問題なければマージしますのでお待ちください。あと、メール通知でコメントは全てすぐ見ていますのでご安心ください。

ありがとうございます。mainでOKです。夕方に確認して問題なければマージしますのでお待ちください。あと、メール通知でコメントは全てすぐ見ていますのでご安心ください。
senooken a commenté il y a 1 an
Propriétaire

@the_quick_fox #6マージして、gnusocial.jpに適用しました。ありがとうございました。 なお、その後テストコードをこちらで追加するので、このチケットはその後に終了します。

issue登録の発端は以下の投稿です (参考情報)。

avatarcontenteditable属性を使用することに起因する不具合かはわからないけど、 前に半角空白を含む行をコピペすると行頭の空白が消えてしまうという不具合はあるんですよね。 ただ、クラシック版のページではtextareaで入力できるのでさほど致命的ではない感じなので優先順位が高くはないですね。
@the_quick_fox #6 を[マージ](https://notabug.org/gnusocialjp/Qvitter/commit/aedbe3a9db572538c178cc4568ce94c0921dbc45)して、gnusocial.jpに適用しました。ありがとうございました。 なお、その後テストコードをこちらで追加するので、このチケットはその後に終了します。 issue登録の発端は以下の投稿です (参考情報)。 <blockquote xmlns="http://www.w3.org/1999/xhtml" style="background:rgb(29,155,240);background-image:linear-gradient(hsla(0,0%,100%,0.5),hsla(0,0%,100%,0.5))"><article><header style="display:flex;line-height:1.5"><img xmlns="http://www.w3.org/1999/xhtml" referrerpolicy="no-referrer" alt="avatar" src="//gnusocial.jp/avatar/141718-48-20230702051032.webp" style="height:4.5em" /><div><div><a href="https://gnusocial.jp/notice/3403698">2023-07-04T15:17:36.000Z</a></div><div>山田|<a href="https://gnusocial.jp/yuki20020924">yuki20020924@gnusocial.jp</a></div></div></header><main><span style="white-space:pre-wrap;word-wrap:word-break">contenteditable属性を使用することに起因する不具合かはわからないけど、 前に半角空白を含む行をコピペすると行頭の空白が消えてしまうという不具合はあるんですよね。 ただ、クラシック版のページではtextareaで入力できるのでさほど致命的ではない感じなので優先順位が高くはないですね。</span></main></article></blockquote> <blockquote xmlns="http://www.w3.org/1999/xhtml" style="background:rgb(29,155,240);background-image:linear-gradient(hsla(0,0%,100%,0.5),hsla(0,0%,100%,0.5))"><article><header style="display:flex;line-height:1.5"><img xmlns="http://www.w3.org/1999/xhtml" referrerpolicy="no-referrer" alt="avatar" src="//gnusocial.jp/avatar/141718-48-20230702051032.webp" style="height:4.5em" /><div><div><a href="https://gnusocial.jp/notice/3403743">2023-07-04T15:23:42.000Z</a></div><div>山田|<a href="https://gnusocial.jp/yuki20020924">yuki20020924@gnusocial.jp</a></div><div><a href="https://gnusocial.jp/notice/3403698">replying to</a> 山田|<a href="https://gnusocial.jp/yuki20020924">yuki20020924@gnusocial.jp</a></div></div></header><main><span style="white-space:pre-wrap;word-wrap:word-break">具体的には クリップボードに" hello"が入ってる状態でペーストすると"hello"みたいに空白が左詰される。 あとスペースキーで空白をついはするときに稀に空白が2個追加されることがある。</span></main></article></blockquote>
senooken a commenté il y a 11 mois
Propriétaire

@the_quick_fox 遅くなりすみません。テストコードを追加できたのでクローズします。

テスト用に、いろいろ関数やAPIのモックを作る必要があり、面倒で時間がかかりました。

Add test for stripHtmlFromPaste · 1f2cd731ba - NotABug.org: Free code hosting

@the_quick_fox 遅くなりすみません。テストコードを追加できたのでクローズします。 テスト用に、いろいろ関数やAPIのモックを作る必要があり、面倒で時間がかかりました。 [Add test for stripHtmlFromPaste · 1f2cd731ba - NotABug.org: Free code hosting](https://notabug.org/gnusocialjp/Qvitter/commit/1f2cd731ba2e1127ff96b0e73f0a66bba3978eb9)
Connectez-vous pour rejoindre cette conversation.
Pas d'étiquette
bug
Aucun jalon
Pas d'assignataire
2 Participants
Chargement…
Annuler
Enregistrer
Il n'existe pas encore de contenu.