preSendUpdateStatus?でtrueを返した時の挙動について †
- ページ: 目安箱
- 投稿者: mutaguchi?
- 優先順位: 低
- 状態: 完了
- カテゴリー: AzureaScript?
- 投稿日: 2011-04-16 (土) 11:16:27
- バージョン:
メッセージ †
preSendUpdateStatus?でtrueを返すと投稿をキャンセルできますが、このときTextArea?の中身が消えてしまうのは違和感ある挙動かなと思いました。
投稿しなかったのだから、テキストは残っていたほうが自然かなーと思います。
とりあえずpreSendUpdateStatus?内でreturn trueする前にTextArea?.text=status.text;とかやってみたんですが、おそらくイベント処理の順番の関係で結局TextArea?の中身は消えてしまいます。
仮に仕様を変更したとしても、return trueしたときでもTextArea?の中身は消したいことももちろんあるでしょうから、return trueの前にTextArea?.text="";すれば消すことも可能なようになっているといいかな、と思います。
- 其れは私も悩んだ所でした。しかし、「一度送ったのだから、消えるのが自然だろう。twitterに送らなくても、他の場所に送ったと考えればいい。TextArea?をなんとかしたいのなら、script作者側でフォローすべきだろう」と考え、System.setTimeout(callback, 10)と、非同期処理をしています。以前は、Http.sendRequestAsync?('http://google.com/', callback, false)等とやっておりました。どうすべきでしょうね。 -- ne_Sachirou?
- CancelしたのだからUIとしては何もするなという気もしますし、どうしましょう。Post後、本体側がやってる処理としては、(function(){TextArea?.text="";TextArea?.hide();TextArea?.disableFooterText?=false;})(); とほぼ等しいので本体側では何もせずに拡張側で面倒見てね、というのでもいいとは思います -- tmyt?
- そうですね、この件に関してはスクリプト側で何とかすべき問題に思えてきました。しかしながらsetTimeoutを併用しないといけないのはちょっと微妙かなと思います。これは何ともなりませんかね? -- mutaguchi?
- どうしましょうか、cancelしたときの挙動をほんとうにUIとして何もしない。に変更した方がいいのかなあ。setTimeoutで実装するのは一度テキストエリアが消えるのもあって微妙だし、かといって、後の処理を無効にするというフラグを追加するのも微妙だし、うーん -- tmyt?
- 可能ならtrueを返したとき=TextArea?そのまま、trueを返さなかったとき=TextArea?消える、になってると自然ではありますよね。これだと「trueを返すがTextArea?は消したい」場合はsetTimeoutで消せば問題ないですから。(逆の場合なら、表示→消える→再び表示、となって一瞬消えた状態になるが、この場合なら、表示→消える、だけなので一瞬消えたor一瞬表示状態とかにはならない) -- mutaguchi?
- 逆にpost実行後にTextArea?を消したくない場合もあると思いますが、その場合はpreSendUpdateStatus?はtrueを返して、自前でupdate()を呼べばいいと思います。 -- mutaguchi?
- Beta17以降Trueを返すとテキストボックスの表示状態を操作しないように変更しました -- tmyt?