データスキームメモ帳の注意
◆ Chromeでは改行をdivにすることもbrにすることもできる
● EnterかShift-Enter
◆ Firefoxだとstyleタグないでの#はURLエンコードしないとダメ
● EnterかShift-Enter
◆ Firefoxだとstyleタグないでの#はURLエンコードしないとダメ
知ってる人も多いかと思いますが ブラウザをメモ帳化する方法です
保存はされないので一時的な用途限定です
dataスキームというもので この例では
contenteditable というのは指定されたタグの内側はブラウザで表示しながら編集できるという便利機能です
そのときにChromeとFirefoxで動きが違います
contenteditable 要素内で改行をしたときに
Chromeは
行をdivタグで囲んで改行します
Shift+Enterでbrタグを使った改行にもできます
わざわざこんな使い分けが用意されていて この機能を使ってちょっと手の込んだ編集をすることも想定されてそうです
Firefoxは
単純にbrタグを入れるだけです
contentediable で書いたもののソースをコピペしてHTMLを作るなんて方法を使ったり ブログの編集画面みたいな contenteditable を使ってプレビューを編集する機能を作るなら こういう違いも頭に入れておくと良いかもしれません
Chromeだと↑のコードそのままアドレスバーに打てば使えます
ですが Firefoxだと動かないです
原因は#
data スキームですが 入力するところはアドレスバーです
URLに#があると それ以降は特別な何書かれていてもいいテキストになりますよね
パースするなら 1つめの#を見つけてそれより前だけを対象にすればいいです
Firefoxでは data スキームでも # があると同じように処理しているようで # 以降はデータスキームの文字列として扱われません
エスケープして
めんどくさいです
URLの扱いだから間違ってはいないんでしょうけど Chromeの親切さがほしいですね
data:text/html, <html contenteditable>
これをURL入れるところにかくと ページ全体がメモ帳になります保存はされないので一時的な用途限定です
dataスキームというもので この例では
<html contenteditable>
と書かれたファイルを開いてるのと一緒ですcontenteditable というのは指定されたタグの内側はブラウザで表示しながら編集できるという便利機能です
注意その1
保存はされないと書きましたが HTMLとしてページの保存や開発者ツールから要素をHTMLとしてコピーするなどで保存することはできますそのときにChromeとFirefoxで動きが違います
contenteditable 要素内で改行をしたときに
Chromeは
行をdivタグで囲んで改行します
Shift+Enterでbrタグを使った改行にもできます
わざわざこんな使い分けが用意されていて この機能を使ってちょっと手の込んだ編集をすることも想定されてそうです
Firefoxは
単純にbrタグを入れるだけです
contentediable で書いたもののソースをコピペしてHTMLを作るなんて方法を使ったり ブログの編集画面みたいな contenteditable を使ってプレビューを編集する機能を作るなら こういう違いも頭に入れておくと良いかもしれません
注意その2
data スキームは ファイルがあってそれを読み込んでるように振る舞ってくれるのでdata:text/html, <html contenteditable><style>body{color:#eee;background:#222;font-family:meiryo;}</style>
と書いて 黒背景に白字さらにメイリオフォントとスタイルを適用させることだってできますChromeだと↑のコードそのままアドレスバーに打てば使えます
ですが Firefoxだと動かないです
原因は#
data スキームですが 入力するところはアドレスバーです
URLに#があると それ以降は特別な何書かれていてもいいテキストになりますよね
パースするなら 1つめの#を見つけてそれより前だけを対象にすればいいです
Firefoxでは data スキームでも # があると同じように処理しているようで # 以降はデータスキームの文字列として扱われません
エスケープして
data:text/html, <html contenteditable><style>body{color:%23eee;background:%23222;font-family:meiryo;}</style>
としないとダメですめんどくさいです
URLの扱いだから間違ってはいないんでしょうけど Chromeの親切さがほしいですね