
フレンド(フォローしてる人)の一覧を出して、
リストを簡単に作れるようするためのサービスです。
フォローする人が増えてリストを活用しないといけない状況なのですが、
標準のリスト作成手順は面倒で面倒でしかたないのです。
つまるところ、iPhoneで Twitterを見やすくするために作りましたw
昨日の夜に唐突に作りたくなって、「刀語」の放送直前に完成しました。
これでやっと仕事に戻れるwww
(気になると仕事ができない人)
「リスト作っちゃおう君」(長い名前だ)はすべて JavaScriptで書かれてて、
jQuery 1.4と、TwitterAPI.jsを利用しています。
Twitter APIのライブラリをいちから作ろうかとも思ったのですが、
POST系を jQuery.ajax()で処理しようと思ったらなぜか Not Foundになり
行き詰まってしまったのでやめました。
TwitterAPI.jsにはリスト系のAPIが用意されてなかったのでそこは自分で拡張。
基本構造がよくできているのでラクでした。Otchy様に感謝。(´ワ`)
ただ残念なことに IEは非対応です。
POST系メソッドでコールバックが呼べないという問題があるので
対応するのも面倒だしいいやーとw
TwitterAPI.jsでは POS系メソッドに iframe経由の方法を採用しています。
iframe内に formを作ってそこから submit。
submitするとページ遷移が行われ、unloadイベントが発行されます。
これをトリガーとしてコールバックを実行するのですが、
普通にやると何故か IEでは unloadイベントが受け取れません。
IEめー!
一応対策はあって、Enjoy*Studyさんで詳細が書かれています。
iframe.contentWindow.name に iframe.nameで指定したのと同じ文字列を設定すればIEでも動きました。
Firefoxだと、bodyにappend前にiframe.nameに設定していた文字列が、appendされた際に iframe.contentWindow.nameにも反映されるようです。なお、appendされた後にiframe.nameを変更しても、 iframe.contentWindow.nameには反映されませんでした。
iframe.nameに何も設定してなくても、iframe.contentWindow.nameに設定されていればちゃんと動くのですが、HTMLとして書いた場合とプロパティが違ってくるのがいやなので、両方に設定するようにしました。
<html>
<head></head>
<body>
<form enctype="multipart/form-data" method="post">
<input type="file" name="userfile" id="file"></input>
</form>
<script>
var iframe = document.createElement('iframe');
iframe.name = 'targetFrame';
document.body.appendChild(iframe);
iframe.contentWindow.name = iframe.name; // 追加
var form = document.forms[0];
form.action = 'about:blank'; // 適当
form.target = iframe.name;
form.submit();
</script>
</body>
</html>
この方法を使って以前自分でも試してみたのですが、
なぜか二回目の読み込みからイベントを拾わなくなってしまい中断。(´・ω・`)
公式ではどうやって実現してるんだろう……。
ソース見てみたけどよくわかりません。
コメントはまだありません。