/ 最近 .rdf 追記 編集 設定 本棚

log[20100415] 非同期ファイルアップロ



20100415() 「新快速 ○○行き HH:MM △分遅延結局何時に着くのだろう? 5分後の HH:MMなのか 5+△分後なの電光掲示で知りたい(またそれだけのスペースしかない)のは次の電車がいつ来るかなので遅延も織りこみ済みだろうと思いかけたがすぐに正確さが売りの日本の電車のことあれはいつ着くはずであったのかを示す時刻だろうと考え直した(その通りだったそれに発着時刻は電車のIDでもあるし(っち行き/こっち行きだけで済む駅ばかりではないだろ))

最終更: 2010-05-07T12:01+0900

[tDiary] 非同期ファイルアップロ

設定画面に jQueryが仕込まれたのとJavaScriptの置き場所が用意されたのでァイルのアップロドを非同期に行う準備が整ったのではない独自のサブミトボタンを編集画面に貼り付けるプラグインが全部非同期になればプレビー画面にアップロドフームを表示しても(編集中の本文が消えたと)怒られないだろう

ャンクだけど Firefox3.6Internet Explorer8Google Chrome4.1で動くものをこの日記(最新じゃないので jQuery対応ではない)に仕込んでみた

  1. ップロドフームの targetをこっそり作成した iframeにすることで編集画面が遷移するのを防ぐ
  2. iframe.{onload|onreadystatechange}をつかまえてスポ(新しい編集画面)から目当ての要素(ップロド済みのファイル一覧とか)を取り出す。(iframe.{contentDocument|contentWindow.document}.getElementById("image_file_list"))
  3. replaceChildは問題が起きるかも?と思ったので .innerHTML = .innerHTMLでざっくりページの一部を更新
  4. ァイル一覧の数が 0個と 1個を行き来するときは画面が痙攣したようになるのでアニメーションにできると良さげ。

これで本文を書きながらプレビーもできるしファイルのアップロドもできる


クリップボドアクセスのために Flashを使うよりはましだけど<iframe>に頼らなければいけないというのもわりと屈辱的<frameset><frame>以上にこれまで存在を認めてこなかったのに


何となくできないものと思っていたけど <iframe>の中から外ドキュメトにアクセスすることができるみたいそれができたら編集画面が無制限に入れ子になる(編集画面の<iframe>の中の編集画面の<iframe>の中の……)ことを今より簡単に防止できてスクリトももうちっと使いやすく書き換えられる


 Firefox(3.6になっても)テキトエリアのスクロール位置をリセトしてしまう件

Karetta|[JavaScript] Firefoxtextareaのカーソル位置に文字列を挿入した後にスクロールが先頭に戻ってしまう問題(karetta.jp)で紹介されている通りで直ったといってもできるだけ余計なことをしないように条件を付けた

var scrollTop = textarea.scrollTop;
/*
  ここで、テキストエリアに文字列を挿入する。
*/
if(0 == textarea.scrollTop && 0 < scrollTop) {
  // スクロール位置がリセットされていたので復元する。
  textarea.scrollTop = scrollTop;
}

ところでInternet Explorer 8だけはテキトエリアのキャレト位置を保存しようなんてことを考えなかったみたいでったんテキトエリアがフーカスを失うとキャレトが必ず末尾に移動するスクロール位置がどうこうどころではないわな


 @2010-05-07

「何となくできないものと思っていたけど <iframe>の中から外ドキュメトにアクセスすること < HTML5 sanbbox属性