新編集機能への要望等まとめ

 question:1107400823も今日で終了ですし、今までの要望・提案等で未採用のものをまとめておきます。< id:hatenadiary

範囲未選択時の動作変更

 ボタンを押下したとき、範囲未選択の場合はカーソル位置にタグ(なり各種記法)を挿入して欲しいです。
 コーディングは、「支援ボタンによるカーソル位置へのタグ挿入」に記載しました。IE6とFirefoxで動作検証済みです。

支援ボタンの追加要望

 追加して欲しいボタンの要望を「【要望】支援ボタンの追加」に挙げてあります。
 動作未検証です。すみません。

リストのネスティング対応

 たとえば、

  1. 一行目
    • 一行目の1
    • 一行目の2
  2. 二行目
    • 二行目の1
    • 二行目の2

という表示をしたいとき、はてなダイアリーではリスト記法で、

+一行目
+-一行目の1
+-一行目の2
+二行目
+-二行目の1
+-二行目の2

と入力します。
 これを、支援ボタンの「数字付きリスト」と「リスト」で作成するとき、現状では

一行目
一行目の1
一行目の2
二行目
二行目の1
二行目の2

という元リストに対して、よりネストの深い

一行目の1
一行目の2

二行目の1
二行目の2

を先に「リスト」化してから、全体を「数字付きリスト」化する手順になります。
 これは感覚的に馴染まないので、リスト全体を

+一行目
+一行目の1
+一行目の2
+二行目
+二行目の1
+二行目の2

という風に「数字付きリスト」化してから

+一行目の1
+一行目の2

+二行目の1
+二行目の2

を「リスト」化すれば

+-一行目の1
+-一行目の2
+-二行目の1
+-二行目の2

となる手順(つまり、行頭の「+」をスキップして「-」を追加する手順)に変えて欲しいと思います。
 具体的なコードは「リストのネスト化対応」にあります(念のために、「対Mac用修正版」も)。IE6とFirefoxで動作検証済みです。

リストの行全体の編集対応

 yukattiさんのダイアリーのセクション「入力支援ボタンを使う順で意図したような出力が得られない問題(要改善)」で述べられている、『たとえば、「テスト」を太字のリスト形式にしたいとき』への対策案を、「function markup()の修正案」に書いてます。IE6とFirefoxで動作検証済みです。

視覚的効果実装について

 視覚的効果のマークアップを実装する方法について、「視覚的効果と物理タグ」にsasadaなりの考えをまとめて有ります。ご参考までに。

プレビューの注意書きのマークアップ

 「p.message未対応のテーマが(かんたん設定用にも)有る」という話を書いてます。

未提出の要望

 まだ検討中の課題を幾つか残しています。

  1. 見出し・リスト等を編集するとき、選択範囲を(選択開始位置のある行の)行頭まで拡大する方法
    • Firefoxなら「var new_start = str.substring(0 , start).lastIndexOf("\n",start) + 1; str.setSelectionRange(new_start , end)」みたいな感じで対応できそうなのですが、IEがねー。TextRangeオブジェクトのmoveStartメソッドが使えるのかどうか・・・。
  2. SafariOpera対応
    • 何か方法がありそうですが、見つかりません。無いのかもしれません。orz
    • 基本的には各ブラウザでのTextAreaコントロールの実装待ちだと思うのですが、Mac OS9以前やLinux2.2以前のOS等のことを考えると、悩んでしまいます。
    • 最悪、はてなツールバーの「言及」みたいに、ボタンを押すと編集エリアの末尾にタグ(や各種記法)を追加する方法も検討するべきかもしれません。これなら(ツールバーや「はまぞう」が動く程度の)ほとんどのブラウザで対応できるはずです。ただ、できればブラウザ毎に挙動が変わるのは避けたいところです。ブラウザの選択肢が多いWinユーザーの混乱の元なので・・・。
    • ちなみに、Safariでselection(経由でフレーム)を取得するのに window.getSelection()が使えますが、Opera6以降で同様のことをするには docment.getSelection()が使えるようです。Opera7.5とOpera8beta1ではテスト済みです。「このページに言及」ブックマークレット(Opera用)を作成する際の参考になるかと思います。この件はmizuno_takaakiさんの『Opera用「このページに言及」ブックマークレット』からの情報です。
  3. その他、書き忘れがあったら追加します。f(^^;