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

Geschlossen
vor 1 Jahr geöffnet von the_quick_fox · 9 Kommentare
the_quick_fox kommentierte vor 1 Jahr

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 kommentierte vor 1 Jahr
Ersteller

一番簡単な解決方法としては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 kommentierte vor 1 Jahr
Besitzer

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

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

このリポジトリを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 kommentierte vor 1 Jahr
Besitzer

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

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

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

承知しました。mainから生やしてみます。
the_quick_fox kommentierte vor 1 Jahr
Ersteller

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

pull requestを作りました。マージ先はmainで大丈夫でしょうか?
senooken kommentierte vor 1 Jahr
Besitzer

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

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

@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 kommentierte vor 10 Monaten
Besitzer

@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)
senooken hat vor 10 Monaten geschlossen
Anmelden, um an der Diskussion teilzunehmen.
Kein Label
bug
Kein Meilenstein
Niemand zuständig
2 Beteiligte
Laden…
Abbrechen
Speichern
Hier gibt es bis jetzt noch keinen Inhalt.