白石です。
取り急ぎ、twttrが宣言されていないということは、Twitter Anywhereがロードできていないんじゃないかと思いました。
ロード失敗→twttrが宣言されておらずundefinedのまま→メソッドを呼びだそうとすると「twttr is not defined」
ということではないかと。
ClosureもTwitter Anywhereも全然知らないので、あまり参考にならない意見だとは思いますが取り急ぎ!
よろしくお願いいたします。
2012年3月8日22:57 ぷりっぷりのおしり <puriket...@gmail.com>:
> --
> このメールは Google グループのグループ「html5j.org」の登録者に送られています。
> このグループに投稿するには、html5-dev...@googlegroups.com にメールを送信してください。
> このグループから退会するには、html5-developer...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/html5-developers-jp?hl=ja からこのグループにアクセスしてください。
>
>3.Jsonpはevents.EventTargetを継承していないため(?)、SUCCESS時のコールバックを直接設定できないような気がしま
>した(未検証)コールバック関数は第二引数に指定できます。
>4.なので、おそらくdom操作に関するイベントをしかけてやらなければいけない(未検証)JSONPをライブラリ読み込みのためのライブラリと誤解されているような気がしますが、、、
JSONP(JSON with padding)
は「クロスドメイン」なHttpローディングの手法。発案された当初は、唯一、クロスドメインでの読み込みが可能な「SCRIPT要素を用いる」のが特徴です。
1)HTML上にSCRIPT要素を動的出力すると、そのタイミングで読み込みが開始される(XHR同様に任意のタイミングで実行可能)
2)読み込んだ内容は、JSONの書かれたテキストデータだけど、JabaScriptソースと扱われるので、何らかの方法で変数に格納する必要があった。関数の引数にJSONを与えて、その関数で変数に格納。
JSONPに限らず、ライブラリ化された技術は、検索すれば開発された経緯や特徴を知ることができますよ。
google closure librery のAPIリファレンス:
http://closure-library.googlecode.com/svn/docs/index.html
closure libreryは「goog.(技術区分).(技術名)」
のような名前空間でクラスが割り当てられ、保存先ディレクトリも対応してると思います。結構な数のファイルがありますが、オープンソースなので、closure
librery のソースを読むこともおすすめです。
1)名前空間から推察して技術概要を知る(キホン)
2)APIリファレンスを読む
3)ソースを読む
で、ほぼ解決できるはず。
2012年3月12日21:35 ぷりっぷりのおしり <puriket...@gmail.com>:
> --
> このメールは Google グループのグループ「html5j.org」の登録者に送られています。
> このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/html5-developers-jp/-/YqVIdU73XiwJ
> にアクセスしてください。
> このグループに投稿するには、html5-develo...@googlegroups.com にメールを送信してください。
> このグループから退会するには、html5-developers-jp+unsubscribe@googlegroups.com
>この"任意のタイミングで書いているにすぎない"というのは、つまり、”Jsonpライブラリを使う主な目的は、読み込みのタイミングを後にずらすことで、ユーザーの訪問時の体感的なレスポンスを向上させる”ということでしょうか?
はじめまして。ぷりっぷりのおしりと申します。
> この"任意のタイミングで書いているにすぎない"というのは、つまり、”Jsonpライブラリを使う主な目的は、読み込みのタイミングを後にずらすことで、ユーザーの訪問時の体感的なレスポンスを向上させる”ということでしょうか?
読み込みタイミングをずらすのはdefer属性(と、async属性)です。
<script src=“anywhere.js” defer async></script>
HTMLファイルの読み込みも終わり、画面全体の描画も終わってるのに
スクリプトファイルが読み込まれていないという状態が発生しますので、滅多に使われることはありません。
(<noscript>の内容が表示されるわけでもない、JavaScriptを使って操作する状態でもない、
最初のメールにあったような、オブジェクトが存在しないというエラーになる、
中途半端な状態ですから、制作者としては非常にマズいわけです。)
defer属性を付けない場合は、スクリプトファイルが読み込めない場合は見た目でわかりますが、
(<script>から先のHTMLも読まれないので、画面全体が真っ白なままで止まります。)
defer属性がついていると、スクリプトファイルが読み込めないまま、画面が描画され、クリックもできるようになります。
(正確には、画面が描画が終わってからスクリプトファイルのダウンロードを開始します。
Safari5.1はdeferもasyncと見なしているようです。)
ですから、「JavaScript対応ブラウザでJavaScriptが使えない状態(ただし<noscript>ではない)」にも対応するページの作り方をしなければならなくなります。
で、そのdeferに対応する方法の一つが、私が書いたsetIntervalです。
JSONPでライブラリファイルを読み込むことは、できないわけではありませんが、
読み込みが完了した後、ドキュメントから<script>要素を取り除くライブラリもあると思いますし、
取り除いた後、そのスクリプトファイル内に書かれていた内容がどのように扱われるか(変数なども消去されるのかどうかなど)というのは、わかりません。
JSONPはあくまで通信方法、(狭義の)Ajaxの代替品ですね。
余談ですが、
JSONPでもAJaxでも、「必要なデータが読めない場合」の処置(通信を中断・中止したりなど)は必要だと思います。
-----
Wings-Winds
http://www.wi-wi.jp/
神崎渉瑠
ちょっと時間が空いていますが。
JSONPというのは、ドキュメントに<script src=“”></script>を追加して、
そのスクリプトファイルの中に書かれた内容を実行します。
というか、<script>を読み込んだらそのファイルの内容を勝手にブラウザが実行するのを利用しています。
先のURLに書かれたe.g.のURLに、以下のようにしてアクセスすると、
http://maps.google.com/maps/geo?callback=myfunc
*JSONPに対応したURLでないと、JSONPとして機能しません。
> 4.なので、おそらくdom操作に関するイベントをしかけてやらなければいけない(未検証)
JSONPをライブラリ読み込みのためのライブラリと誤解されているような気がしますが、、、
このようなライブラリの方が使いやすいです。
http://code.google.com/intl/ja/apis/libraries/
// ライブラリを使ってやりたい処理をここに記述
}, 1000);
2012年3月14日10:21 hagino3000 <hagin...@gmail.com>:
2012年3月14日13:01 ぷりっぷりのおしり <puriket...@gmail.com>:
> --
> このメールは Google グループのグループ「html5j.org」の登録者に送られています。
> このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/html5-developers-jp/-/a4ZAhpitg1AJ
> にアクセスしてください。
> このグループに投稿するには、html5-develo...@googlegroups.com にメールを送信してください。
> このグループから退会するには、html5-developers-jp+unsubscribe@googlegroups.com
このグループに投稿するには、html5-develo...@googlegroups.com にメールを送信してください。
このグループから退会するには、html5-developers-jp+unsubscribe@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/html5-developers-jp?hl=ja からこのグループにアクセスしてください。