
今回はGoogle ChromeとMicrosoft EdgeでURL欄からURLをコピーした時の挙動の違いを紹介する短いネタです。
例えば MySQL のサイトを開いて、ブラウザのURL欄からそのURLをコピーしたときにクリップボードに入るものを比較してみます。
Google Chromeの場合
- 0
- type
text/plain - value
https://www.mysql.com/
- type
これだけです。
当然貼り付け時もhttps://www.mysql.com/だけが貼り付きます。
Microsoft Edgeの場合
- 0
- type
text/plain - value
https://www.mysql.com/
- type
- 1
- type
text/html - value
<a href="https://www.mysql.com/">MySQL</a>
- type
となっています。 (aタグのテキスト部分はページのtitle要素が拾われます。)
貼り付け時の動作
- 書式貼り付けが可能なUI(Office全般など)に貼り付けた場合、Edgeからの貼り付けの場合「MySQL」の文字に
https://www.mysql.com/へのリンクが張られます。 - 書式貼り付けできないUIの場合はtext/plainの方の
https://www.mysql.com/の文字列が張り付きます。- ブラウザのURL欄は書式貼り付け不可なので、URLのみが張り付くというわけです。
アレンジ
さて、これを踏まえてMarkdownエディタをカスタマイズするのも面白いです。
- 貼り付けイベントを検知
- それが
<a href="xxxx">yyyy</a>の形式のテキストだったら「Markdown書式で貼り付けるか」をダイアログで確認する。 - 「OK」だったら正規表現で構文解析をしてhref属性の値とテキストをMarkdownの書式に配置しなおしてカーソル位置に挿入する。貼り付けイベント自体は取り消してしまう。
- 「キャンセル」だったら加工せずに貼り付ける。
ビジネスチャットアプリのMattermostクライアントが同等の機能をすでに実装してました。
私もひとつ前に紹介した「タスク管理ツール」に実装してみました。
SharePointOnlineのURLがアホみたいに長いのですが、これで気兼ねなくペタペタできます。
dupont.hatenablog.jp