Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
pタグを跨いだテキストコピーは 改行が2つになる!?
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
kosakin
August 01, 2026
51
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
pタグを跨いだテキストコピーは 改行が2つになる!?
kosakin
August 01, 2026
More Decks by kosakin
See All by kosakin
Web で実用的な縦書きエディタは可能か?──現在地と普及に向けて
karintou8710
0
1.4k
WYSIWYG ルビ入力の概要と Chromium のバグを修正した話
karintou8710
0
350
RTE ライブラリの仕組みとそれを支えるブラウザ機能
karintou8710
0
820
Sample
karintou8710
0
320
Featured
See All Featured
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
510
Mind Mapping
helmedeiros
1
390
エンジニアに許された特別な時間の終わり
watany
109
250k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
600
The Curious Case for Waylosing
cassininazir
1
550
Tell your own story through comics
letsgokoyo
1
1.1k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
How to build a perfect <img>
jonoalderson
1
6.1k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
Six Lessons from altMBA
skipperchong
29
4.5k
Transcript
pタグを跨いだテキストコピーは 改行が2つになる!? 2026.07.27 #雑LT_study 1
自己紹介 所属 サイボウズ株式会社 (26卒) コサキン @kosakin8710 --- 出身:札幌 最近の話:ご飯作るのが面倒で nosh
を試す 開発領域:フロントエンド リッチテキストエディター触ってる 2
コピーと貼り付けをざっくり解説 • ブラウザやアプリで Cmd-C で、テキストをコピーするのは日常的だと思います! • コピーはクリップボードへの書き込みをしている • text/plain, text/html,
image/png など複数種類のデータを同時に持つことが可能 • 例えばブラウザでコピーすると、text/html と text/plain は最低限コピーされる • 貼り付け時はクリップボードから適切なデータ種類を選び、エディタへ挿入される • 例えば <textarea /> は text/plain を優先的にみる 3
divタグを跨ぐタイプの文章をコピペすると。。。 <textarea /> に貼り付ける Cmd-C 4
pタグを跨ぐタイプの文章をコピペすると。。。 <textarea /> に貼り付ける Cmd-C 謎の空行が出力される!! 5
なんで? • まずコピーアルゴリズムの仕様はなく、ブラウザによって実装が異なる • DOM をテキストに出力するアルゴリズムの一つとして、WHATWG が定める innerText がある •
ここで p タグは改行2つであることが明記!!!!!!! • Blink 実装だと、p タグは innerText の仕様に従うとコメントにある • ちなみにコピーアルゴリズム自体は innerText と異なる(????) • 最終的なDOM とレイアウトのハイブリットアルゴリズムを採用している • Gecko ⇨ p タグは改行2つ出力、Webkit ⇨ マージンによって改行を判断 そもそもこの仕様 is 何? ⇨ 段落 = 空行という慣習があり、margin: 1em 0; が UA のスタイルシートに記載 ( 上下 margin を消したのがややこしい要因。。?) 6
p タグの改行を一つにしたい ⇨ 辛い!!!! • ブラウザ側は改行の数を変える API を用意していない • copy
イベントをハックすると、text/html と text/plain の両方を自前実装する必要がある • innerText は見た目通りのテキストを出さない。<br /> や空タグなど、改行周りがややこしい • text/html はスタイルのインライン展開など複雑 • 全てを div にすれば幸せ(本当。。?) 7
ご清聴ありがとうございました 8