<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4914127768895671227</id><updated>2012-02-17T11:33:04.234+09:00</updated><category term='クロスブラウザ'/><category term='flash'/><category term='aspdotnet'/><category term='javascript'/><category term='API'/><category term='ajax'/><category term='json'/><category term='Flickr'/><title type='text'>Andre's garden プログラミングメモ</title><subtitle type='html'>プログラミングのメモ用BLOGです

自己紹介：あんどれ  
へっぽこプログラマです</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://andresgardenpg.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4914127768895671227/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://andresgardenpg.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>あんどれ</name><uri>http://www.blogger.com/profile/08870991466722728109</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4914127768895671227.post-4043208830643828518</id><published>2007-12-22T22:55:00.000+09:00</published><updated>2007-12-22T23:46:45.195+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='json'/><title type='text'>「名台詞１００＋Flickr」作成時のメモ（JSON）</title><content type='html'>とりえあず参考リンクのみ&lt;br /&gt;&lt;br /&gt;&lt;a href="http://atode.cc/bar.php?u=http%3A%2F%2Fd.hatena.ne.jp%2Fbrazil%2F20050915%2F1126717649&amp;amp;t=JSON+in+JavaScript+-+%E5%AE%9F%E7%94%A8"&gt;JSON in JavaScript - 実用&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.openspc2.org/JavaScript/Ajax/Ajax_study/chapter03/006/"&gt;第三章　データを解析し表示しよう：JSONのデータを表示する&lt;/a&gt;&lt;br /&gt;&lt;a href="http://web.sfc.keio.ac.jp/~shokai/archives/2006/07/json.html"&gt;s.h.log: JavaScript - JSONでデータを受信する方法2種類&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.kawa.net/works/js/jkl/parsexml.html#license"&gt;[ajax] JKL.ParseXML／ajax通信処理ライブラリ&lt;/a&gt;&lt;br /&gt;・安全にjsonを読み込むためのパーサ。&lt;br /&gt;&lt;a href="http://japan.internet.com/developer/20070123/27.html"&gt;Japan.internet.com デベロッパー - JSONを使ってAJAXベースのアプリケーションを高速化する&lt;/a&gt;&lt;br /&gt;・evalは、実際はJavaScriptインタプリタ&lt;br /&gt;&lt;br /&gt;JSONの特徴&lt;br /&gt;・javascriptのオブジェクトをテキストで記述するデータフォーマット&lt;br /&gt;・取得した文字列をeval（文字列からJavaScriptコードを実行する関数）で解析。&lt;br /&gt;・&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;xxxxx&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;でもオブジェクトを取得できる。&lt;br /&gt;  xxxxxはjson形式で記述されたテキストへのリンク&lt;br /&gt;・javascriptのサブセット。&lt;br /&gt;&lt;br /&gt;参考&lt;br /&gt;&lt;a href="http://andre-garden.com/blog/2007/12/flickr_2.html"&gt;Andre's garden: 「名台詞１００＋Flickr」サイドバーに貼れるようにしてみました&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4914127768895671227-4043208830643828518?l=andresgardenpg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andresgardenpg.blogspot.com/feeds/4043208830643828518/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4914127768895671227&amp;postID=4043208830643828518' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4914127768895671227/posts/default/4043208830643828518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4914127768895671227/posts/default/4043208830643828518'/><link rel='alternate' type='text/html' href='http://andresgardenpg.blogspot.com/2007/12/flickrjson.html' title='「名台詞１００＋Flickr」作成時のメモ（JSON）'/><author><name>あんどれ</name><uri>http://www.blogger.com/profile/08870991466722728109</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4914127768895671227.post-6817652950929783098</id><published>2007-12-22T18:30:00.000+09:00</published><updated>2007-12-22T18:39:24.763+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='Flickr'/><title type='text'>「名台詞１００＋Flickr」作成時のメモ（Flickr API利用）</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Flickr APIのドキュメント&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/services/api/"&gt;http://www.flickr.com/services/api/&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Flickr APIの使用例&lt;/span&gt;&lt;br /&gt;&lt;a href="http://itpro.nikkeibp.co.jp/article/COLUMN/20061101/252356/"&gt;JavaScriptからFlickr APIで画像検索&lt;/a&gt;&lt;br /&gt;今回は、上記の画像検索用のソースflickr-search.jsを改変。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ライセンスの設定&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ライセンスの種類&lt;br /&gt;&lt;a href="http://www.flickr.com/services/api/flickr.photos.licenses.getInfo.html"&gt;flickr.photos.licenses.getInfo&lt;/a&gt;に記述&lt;br /&gt;&lt;br /&gt;Example Response&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;licenses&amp;gt;&lt;br /&gt; &amp;lt;license id=&amp;quot;4&amp;quot; name=&amp;quot;Attribution License&amp;quot;→「表示」&lt;br /&gt;  url=&amp;quot;http://creativecommons.org/licenses/by/2.0/&amp;quot; /&amp;gt; &lt;br /&gt; &amp;lt;license id=&amp;quot;6&amp;quot; name=&amp;quot;Attribution-NoDerivs License&amp;quot;→「表示・改変禁止」&lt;br /&gt;  url=&amp;quot;http://creativecommons.org/licenses/by-nd/2.0/&amp;quot; /&amp;gt; &lt;br /&gt; &amp;lt;license id=&amp;quot;3&amp;quot; name=&amp;quot;Attribution-NonCommercial-NoDerivs License&amp;quot;→「表示・非営利・改変禁止」&lt;br /&gt;  url=&amp;quot;http://creativecommons.org/licenses/by-nc-nd/2.0/&amp;quot; /&amp;gt; &lt;br /&gt; &amp;lt;license id=&amp;quot;2&amp;quot; name=&amp;quot;Attribution-NonCommercial License&amp;quot;→「表示・非営利」&lt;br /&gt;  url=&amp;quot;http://creativecommons.org/licenses/by-nc/2.0/&amp;quot; /&amp;gt; &lt;br /&gt; &amp;lt;license id=&amp;quot;1&amp;quot; name=&amp;quot;Attribution-NonCommercial-ShareAlike License&amp;quot;→「表示・非営利・継承」&lt;br /&gt;  url=&amp;quot;http://creativecommons.org/licenses/by-nc-sa/2.0/&amp;quot; /&amp;gt; &lt;br /&gt; &amp;lt;license id=&amp;quot;5&amp;quot; name=&amp;quot;Attribution-ShareAlike License&amp;quot;→「表示・継承」&lt;br /&gt;  url=&amp;quot;http://creativecommons.org/licenses/by-sa/2.0/&amp;quot; /&amp;gt; &lt;br /&gt;&amp;lt;/licenses&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Flick上でのクリエイティブコモンズ（CC）ライセンスの写真検索ページ&lt;br /&gt;&lt;a href="http://www.flickr.com/creativecommons/"&gt;http://www.flickr.com/creativecommons/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;CCのホームページ（右上の「使う」からライセンスの説明を確認）&lt;br /&gt;&lt;a href="http://www.creativecommons.jp/"&gt;http://www.creativecommons.jp/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;flickr.photos.searchの引数licenseにライセンスＩＤ（license idの値）をセット。&lt;br /&gt;複数指定はカンマ区切り。&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;写真の種類ごとのＵＲＬ&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/services/api/misc.urls.html"&gt;Photo Source URLs&lt;/a&gt;を参照&lt;br /&gt;&lt;br /&gt;The URL takes the following format:&lt;br /&gt;&lt;blockquote&gt;http://farm{farm-id}.static.flickr.com/{server-id}/{id}_{secret}.jpg&lt;br /&gt; or&lt;br /&gt;http://farm{farm-id}.static.flickr.com/{server-id}/{id}_{secret}_[mstb].jpg&lt;br /&gt; or&lt;br /&gt;http://farm{farm-id}.static.flickr.com/{server-id}/{id}_{o-secret}_o.(jpg|gif|png)&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;farm-id、server-id、secretはいずれもflickr.photos.searchの結果から取得可能。&lt;br /&gt;&lt;br /&gt;ＵＲＬ例&lt;br /&gt;&lt;a href="http://farm1.static.flickr.com/2/1418878_1e92283336_m.jpg"&gt;http://farm1.static.flickr.com/2/1418878_1e92283336_m.jpg&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;flickr.photos.searchに限らずAPIの動作を各APIの説明の「API Explorer」から確認できる。&lt;br /&gt;&lt;br /&gt;参考　&lt;a href="http://andre-garden.com/blog/2007/12/flickr_2.html"&gt;Andre's garden: 「名台詞１００＋Flickr」サイドバーに貼れるようにしてみました&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4914127768895671227-6817652950929783098?l=andresgardenpg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andresgardenpg.blogspot.com/feeds/6817652950929783098/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4914127768895671227&amp;postID=6817652950929783098' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4914127768895671227/posts/default/6817652950929783098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4914127768895671227/posts/default/6817652950929783098'/><link rel='alternate' type='text/html' href='http://andresgardenpg.blogspot.com/2007/12/flickrflickr-api.html' title='「名台詞１００＋Flickr」作成時のメモ（Flickr API利用）'/><author><name>あんどれ</name><uri>http://www.blogger.com/profile/08870991466722728109</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4914127768895671227.post-4743989171239428208</id><published>2007-12-15T20:23:00.000+09:00</published><updated>2007-12-15T20:41:31.864+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='クロスブラウザ'/><title type='text'>ウインドウの幅と高さの取得</title><content type='html'>参考ＵＲＬ&lt;br /&gt;&lt;a href="http://weblibrary.s224.xrea.com/weblog/webdesign/javascript/javascript_3.html"&gt;ユーザーのウインドウ表示幅を取得するjavascript - WEBデザイン　BLOG&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;クロスブラウザ対応&lt;br /&gt;&lt;br /&gt;幅だけだったので高さもついでに&lt;br /&gt;&lt;blockquote&gt;var getBrowserWidth = function() {  &lt;br /&gt;  if ( window.innerWidth ) { return window.innerWidth; }  &lt;br /&gt;  else if ( document.documentElement &amp;&amp; document.documentElement.clientWidth != 0 ) { return document.documentElement.clientWidth; }  &lt;br /&gt;  else if ( document.body ) { return document.body.clientWidth; }  &lt;br /&gt;  return 0;  &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;var getBrowserHeight = function() {  &lt;br /&gt;  if ( window.innerHeight ) { return window.innerHeight; }  &lt;br /&gt;  else if ( document.documentElement &amp;&amp; document.documentElement.clientHeight != 0 ) { return document.documentElement.clientHeight; }  &lt;br /&gt;  else if ( document.body ) { return document.body.clientHeight; }  &lt;br /&gt;  return 0;  &lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;a href="file:///D:/Amazon_best_ring_alpha_flash_test/blogparts.html"&gt;Amazonウィッシュリング（リンク起動）&lt;/a&gt;で利用&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4914127768895671227-4743989171239428208?l=andresgardenpg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andresgardenpg.blogspot.com/feeds/4743989171239428208/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4914127768895671227&amp;postID=4743989171239428208' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4914127768895671227/posts/default/4743989171239428208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4914127768895671227/posts/default/4743989171239428208'/><link rel='alternate' type='text/html' href='http://andresgardenpg.blogspot.com/2007/12/blog-post_15.html' title='ウインドウの幅と高さの取得'/><author><name>あんどれ</name><uri>http://www.blogger.com/profile/08870991466722728109</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4914127768895671227.post-5479514963897930001</id><published>2007-12-15T20:16:00.000+09:00</published><updated>2007-12-15T20:41:17.557+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='クロスブラウザ'/><title type='text'>要素の絶対位置の取得</title><content type='html'>クロスブラウザ対策&lt;br /&gt;&lt;br /&gt;参考ＵＲＬ&lt;br /&gt;&lt;a href="http://hkom.blog1.fc2.com/blog-entry-503.html"&gt;anything from here offsetLeft,offsetTop,offsetWidthそしてoffsetHeight──静的配置要素の絶対位置を確実に取得する方法について&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;利用時には、元のソースからfunctionを変数に入れ変えて利用しました。&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;//必要となるGlobal変数の定義&lt;br /&gt;// 間違いのないように全文字列を小文字に変換&lt;br /&gt;var agt = navigator.userAgent.toLowerCase();&lt;br /&gt;var is_ie　 = ((agt.indexOf("msie") != -1) &amp;&amp; (agt.indexOf("opera") == -1));&lt;br /&gt;var is_gecko = (agt.indexOf('gecko') != -1);&lt;br /&gt;var is_opera = (agt.indexOf("opera") != -1);&lt;br /&gt;&lt;br /&gt;　//要素のスタイル属性を取得する関数&lt;br /&gt;var getElementStyle = function (targetElm,IEStyleProp,CSSStyleProp) {&lt;br /&gt;　var elem = targetElm;&lt;br /&gt;　if (elem.currentStyle) {&lt;br /&gt;　　return elem.currentStyle[IEStyleProp];&lt;br /&gt;　} else if (window.getComputedStyle) {&lt;br /&gt;　　var compStyle = window.getComputedStyle(elem,"");&lt;br /&gt;　　return compStyle.getPropertyValue(CSSStyleProp);&lt;br /&gt;　}&lt;br /&gt;}//---End Function&lt;br /&gt;&lt;br /&gt;var getPosition = function (that) {&lt;br /&gt;　var targetEle = that;　　　//thatは位置を取得したい要素Object&lt;br /&gt;　var pos = new function(){ this.x = 0; this.y = 0; }&lt;br /&gt;　while( targetEle ){&lt;br /&gt;　　pos.x += targetEle.offsetLeft; &lt;br /&gt;　　pos.y += targetEle.offsetTop; &lt;br /&gt;　　targetEle = targetEle.offsetParent;&lt;br /&gt;　　　//IEの補正：上記計算で無視されてしまう各親要素のborder幅を加算&lt;br /&gt;　　if ((targetEle) &amp;&amp; (is_ie)) {&lt;br /&gt;　　　pos.x += (parseInt(getElementStyle(targetEle,"borderLeftWidth","border-left-width")) || 0);&lt;br /&gt;　　　pos.y += (parseInt(getElementStyle(targetEle,"borderTopWidth","border-top-width")) || 0);&lt;br /&gt;　　}&lt;br /&gt;　}&lt;br /&gt;　　//geckoの補正：カウントしないbody部border幅をマイナスしてしまうので２倍して加算&lt;br /&gt;　if (is_gecko) {&lt;br /&gt;　　　//以下の部分でbody部を取得し、borderの減算を補正する。&lt;br /&gt;　　var bd = document.getElementsByTagName("BODY")[0];　　//body部を取得&lt;br /&gt;　　pos.x += 2*(parseInt(getElementStyle(bd,"borderLeftWidth","border-left-width")) || 0);&lt;br /&gt;　　pos.y += 2*(parseInt(getElementStyle(bd,"borderTopWidth","border-top-width")) || 0);&lt;br /&gt;　}&lt;br /&gt;　return pos;&lt;br /&gt;}//---End Function&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;a href="file:///D:/Amazon_best_ring_alpha_flash_test/blogparts.html"&gt;Amazonウィッシュリング（リンク起動）&lt;/a&gt;で利用&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4914127768895671227-5479514963897930001?l=andresgardenpg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andresgardenpg.blogspot.com/feeds/5479514963897930001/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4914127768895671227&amp;postID=5479514963897930001' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4914127768895671227/posts/default/5479514963897930001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4914127768895671227/posts/default/5479514963897930001'/><link rel='alternate' type='text/html' href='http://andresgardenpg.blogspot.com/2007/12/blog-post.html' title='要素の絶対位置の取得'/><author><name>あんどれ</name><uri>http://www.blogger.com/profile/08870991466722728109</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4914127768895671227.post-9093497508443286691</id><published>2007-12-15T19:52:00.000+09:00</published><updated>2007-12-15T20:48:21.545+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>SWFObject2.0でページのロード後にFlashオブジェクトの再表示を行うには？</title><content type='html'>Flashオブジェクトを埋め込むときには通常では色々問題があるので以下のサイトを参考にしました。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mtl.recruit.co.jp/blog/2007/10/swfobject_v20.html"&gt;SWFObject v2.0 ドキュメント日本語訳&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;SWFObjectというライブラリを使って&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Strict//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; lang=&amp;quot;en&amp;quot; xml:lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;head&amp;gt;&lt;br /&gt;    &amp;lt;title&amp;gt;SWFObject v2.0 dynamic embed - step 3&amp;lt;/title&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=iso-8859-1&amp;quot; /&amp;gt;&lt;br /&gt;    &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;swfobject.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;    swfobject.embedSWF(&amp;quot;myContent.swf&amp;quot;, &amp;quot;myContent&amp;quot;, &amp;quot;300&amp;quot;, &amp;quot;120&amp;quot;, &amp;quot;9.0.0&amp;quot;);&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;/head&amp;gt;&lt;br /&gt;  &amp;lt;body&amp;gt;&lt;br /&gt;    &amp;lt;div id=&amp;quot;myContent&amp;quot;&amp;gt;&lt;br /&gt;      &amp;lt;p&amp;gt;Alternative content&amp;lt;/p&amp;gt;&lt;br /&gt;    &amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;と書けば、Flashは問題なくページ上に表示されます。&lt;br /&gt;上記の例では、htmlがロードされる前にHeadに書いたJavascript宣言（swfobject.embedSWF）からおそらく（？）&lt;br /&gt;&lt;br /&gt;１．swfobject.embedSWF("myContent.swf", "myContent", "300", "120", "9.0.0");&lt;br /&gt;２．embedSWF内のaddDomLoadEvent→ロード時に走るイベントを定義する関数&lt;br /&gt;３．addDomLoadEvent内でcreateSWFを（Flashオブジェクトを生成する関数）を定義。&lt;br /&gt;４．ページ読み込み後に、onDomLoadイベントが走ってcallDomLoadFunctionsを呼び出す。&lt;br /&gt;５．callDomLoadFunctionsで定義されたcreateSWFが処理される&lt;br /&gt;&lt;br /&gt;といった順序で処理が走ります。&lt;br /&gt;&lt;br /&gt;ただ、残念なことにロード後にＨＴＭＬを動的に生成して再表示したい場合、embedSWFを呼びだしただけでは上手くいきませんでした。&lt;br /&gt;&lt;br /&gt;調べてみるとロード後は、embedSWFを呼んでもcreateSWFが呼ばれないからということがわかってきました。&lt;br /&gt;&lt;br /&gt;でもって結構詰まったのですが、色々探してみるとありがたいことに解決策が以下のフォーラムに載っていました。&lt;br /&gt;&lt;a href="http://groups.google.com/group/swfobject/browse_thread/thread/c857d29662509809"&gt;http://groups.google.com/group/swfobject/browse_thread/thread/c857d29662509809&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;I've been develeoping with the old swfObject (1.5) and recently&lt;br /&gt;switched over to the new 2.0 beta.&lt;br /&gt;I noticed that you can't embed a flash object after the pages loads as&lt;br /&gt;the embedding with the new version happens only on the onload. Is&lt;br /&gt;there a way to use this JS to replace an existing flash? &lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;SWFObject2.0でロード後にFlashの再表示をする方法はないか？といった内容でまさに知りたいことです。&lt;br /&gt;&lt;br /&gt;解決策のソースを書いているエントリ&lt;br /&gt;&lt;a href="http://groups.google.com/group/swfobject/msg/0a04ea40128088c2"&gt;http://groups.google.com/group/swfobject/msg/0a04ea40128088c2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;一部抜粋&lt;br /&gt;&lt;blockquote&gt;The fix is really just the first inserted line. This:&lt;br /&gt;＜元のソース＞&lt;br /&gt;  function addDomLoadEvent(fn) {&lt;br /&gt;    domLoadFnArr[domLoadFnArr.length] = fn; // Array.push() is only&lt;br /&gt;available in IE5.5+&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;becomes this:&lt;br /&gt;＜変更後のソース＞&lt;br /&gt;&lt;br /&gt;  function addDomLoadEvent(fn) {&lt;br /&gt;    if (isDomLoaded) return fn();  // if the DOM is already loaded,&lt;br /&gt;trigger directly&lt;br /&gt;    domLoadFnArr[domLoadFnArr.length] = fn; // Array.push() is only&lt;br /&gt;available in IE5.5+&lt;br /&gt;  } &lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;ロード済みなら引数（fnはcreateSWFを含む）をすぐ実行するというコードが追加されています。&lt;br /&gt;&lt;br /&gt;さらに詳しい比較のコードが別ページに解説されており非常に助かりました。&lt;br /&gt;&lt;a href="http://pastie.textmate.org/private/4ftrnrhae7h50nko8k6sg"&gt;http://pastie.textmate.org/private/4ftrnrhae7h50nko8k6sg&lt;/a&gt;&lt;br /&gt;ここまで詳細に書いてくれていると助かります。&lt;br /&gt;&lt;br /&gt;修正したSWFObject.jsを置いときます。&lt;br /&gt;もし、利用してもいいかもと思う方はどうぞ持っていって下さい。（動作保障は自己責任でよろしくお願いします。）&lt;br /&gt;（SWFObject.jsは、&lt;a href="http://ja.wikipedia.org/wiki/MIT_License"&gt;MIT License&lt;/a&gt;です。）&lt;br /&gt;&lt;br /&gt;&lt;a href="http://andre-garden.com/source/swfobject.js"&gt;SWFObject.js&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;※よくわかってないながらもSWFObject2.0でロード後にFlashの再表示をしたかったので書いてみましたが、よくわかっている人からのいいやり方がありましたらぜひコメント・トラックバックでご指摘下さい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4914127768895671227-9093497508443286691?l=andresgardenpg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andresgardenpg.blogspot.com/feeds/9093497508443286691/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4914127768895671227&amp;postID=9093497508443286691' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4914127768895671227/posts/default/9093497508443286691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4914127768895671227/posts/default/9093497508443286691'/><link rel='alternate' type='text/html' href='http://andresgardenpg.blogspot.com/2007/12/swfobject20flash.html' title='SWFObject2.0でページのロード後にFlashオブジェクトの再表示を行うには？'/><author><name>あんどれ</name><uri>http://www.blogger.com/profile/08870991466722728109</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4914127768895671227.post-4719466453316600820</id><published>2007-07-01T21:48:00.000+09:00</published><updated>2007-07-01T22:55:00.872+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>クロージャ(Closure)のメモ</title><content type='html'>(javascript上での)クロージャの理解のためのサンプル&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;script laungage=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;var x1 = function() {&lt;br /&gt; var Y = 0;&lt;br /&gt; return function(Z) {&lt;br /&gt;  Y += Z;&lt;br /&gt;  return Y;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;var x2 = x1();//x2は、x2 = function(Z){...}と同じ&lt;br /&gt;var x3 = x1();//x3は、x3 = function(Z){...}と同じ&lt;br /&gt;&lt;br /&gt;document.writeln(&amp;quot;x2(1)は&amp;quot;+x2(1));//1&lt;br /&gt;document.writeln(&amp;quot;x2(2)は&amp;quot;+x2(2));//3&lt;br /&gt;document.writeln(&amp;quot;x2(3)は:&amp;quot;+x2(3));//6&lt;br /&gt;&lt;br /&gt;document.writeln(&amp;quot;x3(1):&amp;quot;+x3(1));//1&lt;br /&gt;document.writeln(&amp;quot;x3(2):&amp;quot;+x3(2));//3&lt;br /&gt;&lt;br /&gt;x1= function(){return function() {return 1}};&lt;br /&gt;x3 = x1();&lt;br /&gt;&lt;br /&gt;document.writeln(&amp;quot;x3(3):&amp;quot;+x3(3));//X1()が戻す関数が新しくなったので1&lt;br /&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;※今までvar x2 = x1()をx2 = x1（C#の参照と勘違い）と同じと思っていた。&lt;br /&gt;※x2 = function(Z){...}でわかりやすくなった。&lt;br /&gt;※x1内の関数が入れ代わらない限りローカル変数Yは保持されている。&lt;br /&gt;&lt;br /&gt;参考サイト&lt;br /&gt;&lt;a href="http://anond.hatelabo.jp/20070622101313"&gt;javascriptを理解するためのたった2つの大切なこと:改&lt;/a&gt;&lt;br /&gt;&lt;a href="http://archiva.jp/web/javascript/writing_style.html"&gt;JavaScriptの巧い書き方&lt;/a&gt;のコメント内(「関数実行後も内部で定義したデータにアクセス出来る」で検索)&lt;br /&gt;&lt;br /&gt;以下はまだ読んでいない&lt;br /&gt;&lt;a href="http://ishikawa.arielworks.com/memo/2005/07/24/031449"&gt;クロージャとOOPとJavaScriptの謎仕様&lt;/a&gt;&lt;br /&gt;&lt;a href="http://capsctrl.que.jp/kdmsnr/wiki/bliki/?Closure"&gt;Martin Fowler's Bliki in Japanese - Closure&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4914127768895671227-4719466453316600820?l=andresgardenpg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andresgardenpg.blogspot.com/feeds/4719466453316600820/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4914127768895671227&amp;postID=4719466453316600820' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4914127768895671227/posts/default/4719466453316600820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4914127768895671227/posts/default/4719466453316600820'/><link rel='alternate' type='text/html' href='http://andresgardenpg.blogspot.com/2007/07/closure.html' title='クロージャ(Closure)のメモ'/><author><name>あんどれ</name><uri>http://www.blogger.com/profile/08870991466722728109</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4914127768895671227.post-4118399519223779316</id><published>2007-06-19T13:29:00.000+09:00</published><updated>2007-06-19T14:24:44.326+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='aspdotnet'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><title type='text'>WebServiceの戻り値に利用しているDataSet,DataTableをJSONに変換する（asp.net ajax利用）</title><content type='html'>Jason氏のAjaxComponentLibraryを利用します。&lt;br /&gt;１．(a Weblog by Jason Diamond)からJacl Release 3をダウンロードする。&lt;br /&gt; &lt;a href="http://jason.diamond.name/weblog/2007/06/07/jacl-release-3"&gt;http://jason.diamond.name/weblog/2007/06/07/jacl-release-3&lt;/a&gt;&lt;br /&gt;　　のrelease からダウンロードできます。（This was posted by Jason Diamond on Thursday, June 7th, 2007 at 2:57 pm.）&lt;br /&gt;&lt;br /&gt;ネタ元：@ITの掲示板「件名：ajaxの返す値が2つ以上の場合」（※１）&lt;br /&gt;&lt;br /&gt;２．Jacl-3.zipを解凍してビルド。AjaxComponentLibrary.dllを探して（※２）コピー。自分のプロジェクトから参照できるようにする。&lt;br /&gt;&lt;br /&gt;３．利用する。&lt;br /&gt;（１）Web.configに以下の内容（※３）を追加&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt; &amp;lt;system.web.extensions&amp;gt;&lt;br /&gt;  &amp;lt;scripting&amp;gt;&lt;br /&gt;   &amp;lt;webServices&amp;gt;&lt;br /&gt;    &amp;lt;jsonSerialization&amp;gt;&lt;br /&gt;     &amp;lt;converters&amp;gt;&lt;br /&gt;      &amp;lt;add name=&amp;quot;DataConverter&amp;quot; type=&amp;quot;AjaxComponentLibrary.DataConverter&amp;quot; /&amp;gt;&lt;br /&gt;     &amp;lt;/converters&amp;gt;&lt;br /&gt;    &amp;lt;/jsonSerialization&amp;gt;&lt;br /&gt;   &amp;lt;/webServices&amp;gt;&lt;br /&gt;  &amp;lt;/scripting&amp;gt;&lt;br /&gt; &amp;lt;/system.web.extensions&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;（２）後は、普通に使えます。&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;[WebMethod]&lt;br /&gt;public DataTable GetData()&lt;br /&gt;{&lt;br /&gt;    DataTable dt = new DataTable();&lt;br /&gt;&lt;br /&gt;    dt.Columns.Add("id", typeof(string));&lt;br /&gt;    dt.Columns.Add("title", typeof(string));&lt;br /&gt;&lt;br /&gt;    dt.Rows.Add(new object[] { "0001", "Table Convert" });&lt;br /&gt;    dt.Rows.Add(new object[] { "0002", "Good Job!" });&lt;br /&gt;   &lt;br /&gt;    return dt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;responseデータ(firebugで確認)&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;{"columns":["id","title"],"rows":[{"id":"0001","title":"Table Convert"},{"id":"0002","title":"Good Job!"}],"__type":"System.Data.DataTable"}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;※１  &lt;a href="http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=24246&amp;forum=7"&gt;http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=24246&amp;forum=7&lt;/a&gt;&lt;br /&gt;※２　?ajaxcomponent3\Jacl\AjaxComponentLibrary\bin\Debug\AjaxComponentLibrary.dll&lt;br /&gt;※３　詳細は、&lt;a href="http://ajax.asp.net/docs/ConfiguringASPNETAJAX.aspx"&gt;http://ajax.asp.net/docs/ConfiguringASPNETAJAX.aspx&lt;/a&gt;のThe &amp;lt;system.web.extensions&amp;gt; Elementを参照&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;以下は、思いついたことを適当に・・・&lt;br /&gt;・Web.configの&amp;lt;jsonSerialization&amp;gt;で設定した情報をどこで使っているかまではみていない。誰か調べた方がいたら教えてほしいです＾＾；&lt;br /&gt;・JavaScriptConverterを継承したDataConverterでDataSet,Datatableをジェネリクス型のDistionary&lt;string, object&gt;に変換している。&lt;br /&gt;・XMLから直接JSONにするなら参考になるかも。簡単にできなさそうだったので見ただけ。&lt;br /&gt;　&lt;a href="http://karua.at.webry.info/200705/article_26.html"&gt;HttpWebRequest を使用して ASP.NET AJax のメソッドを呼び出す(1)&lt;/a&gt;&lt;br /&gt;　&lt;a href="http://karua.at.webry.info/200705/article_27.html"&gt;HttpWebRequest を使用して ASP.NET AJax のメソッドを呼び出す(2)&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.phdcc.com/xml2json.htm"&gt;How to convert XML to JSON in ASP.NET C#&lt;/a&gt;→これもXMLをJSONにする方法。例がわかりやすそう。&lt;br /&gt;&lt;br /&gt;・Jason's AJAX Component LibraryのサンプルWebsiteには他にもすばらしいコンポーネントサンプルがあるが必要になったら見ることにする。&lt;br /&gt;&lt;br /&gt;An introduction to extender controls and behaviors&lt;br /&gt;Extender control examples&lt;br /&gt;&lt;br /&gt;    * ReorderColumnsExtender&lt;br /&gt;    * ResizeColumnsExtender&lt;br /&gt;    * SelectActionExtender&lt;br /&gt;    * SortRowsExtender&lt;br /&gt;    * TableDataBinderExtender&lt;br /&gt;    * TableRowCheckedChangedExtender&lt;br /&gt;    * TextBoxImageButtonExtender&lt;br /&gt;    * TextChangedExtender&lt;br /&gt;&lt;br /&gt;Non-visual component examples&lt;br /&gt;&lt;br /&gt;    * TextSizeWatcher&lt;br /&gt;&lt;br /&gt;Other examples&lt;br /&gt;&lt;br /&gt;    * Returning DataSet and DataTable objects from web services&lt;br /&gt;    * Using both ReorderColumnsExtender and ResizeColumnsExtender on the same target&lt;br /&gt;    * Using both ReorderColumnsExtender and SortRowsExtender on the same target&lt;br /&gt;    * Persisting sorted tables with cookies&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4914127768895671227-4118399519223779316?l=andresgardenpg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andresgardenpg.blogspot.com/feeds/4118399519223779316/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4914127768895671227&amp;postID=4118399519223779316' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4914127768895671227/posts/default/4118399519223779316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4914127768895671227/posts/default/4118399519223779316'/><link rel='alternate' type='text/html' href='http://andresgardenpg.blogspot.com/2007/06/aspnet-ajaxwebservicedatasetdatatablejs.html' title='WebServiceの戻り値に利用しているDataSet,DataTableをJSONに変換する（asp.net ajax利用）'/><author><name>あんどれ</name><uri>http://www.blogger.com/profile/08870991466722728109</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4914127768895671227.post-870900773917304384</id><published>2007-06-17T20:34:00.000+09:00</published><updated>2007-06-19T19:51:25.156+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='aspdotnet'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><title type='text'>Calling Web Services from Client Script in ASP.NET AJAXのメモ</title><content type='html'>Calling Web Services from Client Script in ASP.NET AJAXを読んだのでメモ書き。&lt;br /&gt;&lt;br /&gt;Calling Web Services from Client Script in ASP.NET AJAX&lt;br /&gt;&lt;a href="http://ajax.asp.net/docs/tutorials/ConsumingWebServicesWithAJAXTutorial.aspx"&gt;http://ajax.asp.net/docs/tutorials/ConsumingWebServicesWithAJAXTutorial.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;初めに&lt;/span&gt;&lt;br /&gt;JavaScriptからWebサービスを呼び出すための方法について&lt;br /&gt;・ＷＥＢサービス利用のためにページ上にプロキシクラス（javascript）を生成する。設定方法等。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ＷＥＢサービスを呼び出す方法&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;例&lt;br /&gt;・値を返さないＷＥＢサービスの呼び出し&lt;br /&gt;・値を返すＷＥＢサービスの呼び出し&lt;br /&gt;・パラメータを取るＷＥＢサービスメソッドの呼び出し&lt;br /&gt;・「ＨＴＴＰ　ＧＥＴ」を使うＷＥＢサービスメソッドの呼び出し&lt;br /&gt;・ＸＭＬドキュメントを返すＷＥＢサービスメソッドの呼び出し&lt;br /&gt;&lt;br /&gt;動くサンプル&lt;br /&gt;&lt;a href="http://ajax.asp.net/docs/Samples/Sys.Net.CallWebServiceMethods/cs/CallWebServiceMethods.aspx"&gt;http://ajax.asp.net/docs/Samples/Sys.Net.CallWebServiceMethods/cs/CallWebServiceMethods.aspx&lt;br /&gt;&lt;/a&gt;サンプルソース&lt;br /&gt;&lt;a href="http://ajax.asp.net/docs/ViewSample.aspx?sref=Sys.Net.CallWebServiceMethods%23CallWebServiceMethods.aspx"&gt;http://ajax.asp.net/docs/ViewSample.aspx?sref=Sys.Net.CallWebServiceMethods%23CallWebServiceMethods.aspx&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;デフォルトプロパティとしての個別コールバック関数&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;パラメータを並べなくても個別コールバック関数を利用すれば以下の事を別々に処理できる。&lt;br /&gt;メリットはWEBサービスを呼び出すシンタックスが簡潔になります。&lt;br /&gt;・成功時の処理&lt;br /&gt;・失敗時の処理&lt;br /&gt;・ユーザーコンテキストを使った処理&lt;br /&gt;・引数を利用する処理&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;プロキシクラスのインスタンス上のプロパティとしてコールバック関数を設定する&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;プロキシクラスのインスタンスを作るとＷＥＢサービスのメソッドを複数呼びだしたり、別々の初期値を設定できる。&lt;br /&gt;&lt;br /&gt;追加情報：プロキシクラスの生成についての説明&lt;br /&gt;&lt;a href="http://ajax.asp.net/docs/ClientReference/Sys.Net/GeneratedProxyClasses/default.aspx"&gt;http://ajax.asp.net/docs/ClientReference/Sys.Net/GeneratedProxyClasses/default.aspx&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;動くサンプル&lt;br /&gt;&lt;a href="http://ajax.asp.net/docs/Samples/Sys.Net.UsingProxyClass/cs/default.aspx"&gt;http://ajax.asp.net/docs/Samples/Sys.Net.UsingProxyClass/cs/default.aspx&lt;br /&gt;&lt;/a&gt;サンプルソース&lt;br /&gt;&lt;a href="http://ajax.asp.net/docs/ViewSample.aspx?sref=Sys.Net.CallWebServiceMethods%23CallWebServiceMethods.aspx"&gt;http://ajax.asp.net/docs/ViewSample.aspx?sref=Sys.Net.CallWebServiceMethods%23CallWebServiceMethods.aspx&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;[メモ１]&lt;br /&gt;UsingProxyClass.jsのpageload()はwindows.pageload()？ページがロードされる前の事前準備のイベント。&lt;br /&gt;[メモ２]&lt;br /&gt;次に呼び出すＷＥＢサービスを事前に指定することによって、成功時、失敗時、ユーザーコンテキスト、引数の関数を個々に呼べるかわりに、呼び出されたＷＥＢメソッドが何だったかを判断する必要あり。（methodName）&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;例：SucceededCallbackの場合&lt;br /&gt;// Callback function invoked when the call to &lt;br /&gt;// the Web service methods succeeds.&lt;br /&gt;function SucceededCallback(result, userContext, methodName)&lt;br /&gt;{ &lt;br /&gt;    var message;&lt;br /&gt;    switch(methodName)&lt;br /&gt;    {&lt;br /&gt;        case ("GetDefaultColor"):&lt;br /&gt;        case ("SetColor"):&lt;br /&gt;        {&lt;br /&gt;            // Get the server default color.&lt;br /&gt;            message = result.message;&lt;br /&gt;            defaultRgb = result.rgb;&lt;br /&gt;        &lt;br /&gt;            &lt;br /&gt;            // Transform the rgb array into a string.&lt;br /&gt;            var serverColor = defaultRgb[0]+ defaultRgb[1] + defaultRgb[2];&lt;br /&gt;            &lt;br /&gt;            // Display the result.&lt;br /&gt;            displayResult.style.color = "yellow";&lt;br /&gt;            displayResult.style.fontWeight = "bold";&lt;br /&gt;            displayResult.style.backgroundColor = "#" + serverColor;&lt;br /&gt;            DisplayMessage(message);&lt;br /&gt;            break;&lt;br /&gt;        }&lt;br /&gt;        default:&lt;br /&gt;        {&lt;br /&gt;            DisplayMessage("Method unknown");&lt;br /&gt;        }&lt;br /&gt;    }       &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ＷＥＢサービスメソッドの呼び出し中にエラーをハンドリングする&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; WebServiceMethodError.js Samples.AspNet.WebService.Div(a, b, SucceededCallback, FailedCallback);&lt;br /&gt;に対してa=10、b=0をセット（処理は10/0で０除算のエラー）してFailedCallbackに流れる処理（エラーのハンドリング）のサンプル。&lt;br /&gt;&lt;br /&gt;動くサンプル&lt;br /&gt;&lt;a href="http://ajax.asp.net/docs/Samples/Sys.Net.ErrorHandlingTutorial/cs/WebServiceMethodError.aspx"&gt;http://ajax.asp.net/docs/Samples/Sys.Net.ErrorHandlingTutorial/cs/WebServiceMethodError.aspx&lt;br /&gt;&lt;/a&gt;サンプルソース&lt;br /&gt;&lt;a href="http://ajax.asp.net/docs/ViewSample.aspx?sref=Sys.Net.ErrorHandlingTutorial%23WebServiceMethodError.aspx"&gt;http://ajax.asp.net/docs/ViewSample.aspx?sref=Sys.Net.ErrorHandlingTutorial%23WebServiceMethodError.aspx&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;複数のＷＥＢメソッドから１つのコールバックを呼ぶ&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;引数の数、セットする値（※）によってコールバック内の処理を呼び分ける方法についてのサンプル。&lt;br /&gt;[メモ２]の拡張。呼び出す条件に「ユーザーコンテキストの有無」「メソッド名の有無」を利用&lt;br /&gt;&lt;br /&gt;※呼び出しのサンプル&lt;br /&gt;&lt;blockquote&gt;Samples.AspNet.WebService.Add(a, b, &lt;br /&gt;    SucceededCallbackWithContext, FailedCallback, userContext, null);&lt;br /&gt;&lt;br /&gt;Samples.AspNet.WebService.Add(a, b, &lt;br /&gt;    SucceededCallbackWithContext, FailedCallback);&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;動くサンプル&lt;br /&gt;&lt;a href="http://ajax.asp.net/docs/Samples/Sys.Net.MultipleCallers/cs/MultipleCallers.aspx"&gt;http://ajax.asp.net/docs/Samples/Sys.Net.MultipleCallers/cs/MultipleCallers.aspx&lt;br /&gt;&lt;/a&gt;サンプルソース&lt;br /&gt;&lt;a href="http://ajax.asp.net/docs/ViewSample.aspx?sref=Sys.Net.MultipleCallers%23MultipleCallers.aspx"&gt;http://ajax.asp.net/docs/ViewSample.aspx?sref=Sys.Net.MultipleCallers%23MultipleCallers.aspx&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;複合型を返す&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ＷＥＢサービスの戻り値をJavaScriptのオブジェクト（JSON）で返すことについてのサンプル。&lt;br /&gt;ASP.NET側（HandleColor.asmx）のWEBサービスメソッドは、ColorObjectクラス(文字列を返すpublicメソッドが３つ)&lt;br /&gt;WEBサービスメソッドに[GenerateScriptType(typeof(ColorObject))]属性を付加。&lt;br /&gt;HandleColor.js側ではJavaScriptオブジェクト(JSON)で処理可能になる。&lt;br /&gt;&lt;br /&gt;動くサンプル&lt;br /&gt;&lt;a href="http://ajax.asp.net/docs/Samples/Sys.Net.ReturnComplexType/cs/Default.aspx"&gt;http://ajax.asp.net/docs/Samples/Sys.Net.ReturnComplexType/cs/Default.aspx&lt;br /&gt;&lt;/a&gt;サンプルソース&lt;br /&gt;&lt;a href="http://ajax.asp.net/docs/ViewSample.aspx?sref=Sys.Net.ExchangeComplexTypes"&gt;http://ajax.asp.net/docs/ViewSample.aspx?sref=Sys.Net.ExchangeComplexTypes&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ジェネリクスや配列(array)型を返す&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ジェネリクスや配列(array)型を返すＷＥＢサービスのサンプル。&lt;br /&gt;・ジェネリクスのList&lt;SimpleClass&gt;型が戻り値。generics.js側ではJSONで処理できる。&lt;br /&gt;  ※SimpleClassはカスタムクラス&lt;br /&gt;  ※WEBサービスメソッドに[ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]属性がなくても同じ結果。&lt;br /&gt;&lt;br /&gt;・ジェネリクスのDistionary&amp;lt;String, String&amp;gt;型が戻り値。generics.js側ではJSONで処理できる。&lt;br /&gt;&lt;br /&gt;・ジェネリクスのDistionary&amp;lt;String, SimpleClass2&amp;gt;型が戻り値。generics.js側ではJSONで処理できる。&lt;br /&gt;  ※SimpleClass2はカスタムクラス&lt;br /&gt;&lt;br /&gt;・ジェネリクスのDistionary&lt;String, SimpleClass2&gt;型を引数にして呼び出す。generics.js側ではJSONで引数をセット。（Samples.AspNet.TestService.PassGenericDictionary({"first":simple});）&lt;br /&gt;※WEBサービスクラスに[GenerateScriptType(typeof(SimpleClass2))]属性が必要&lt;br /&gt;&lt;br /&gt;※※引数の型が１つの場合、List&lt;SimpleClass2&gt;型が引数の時は属性は必要なかった。（Samples.AspNet.TestService.PassGenericList([simple]);）&lt;br /&gt;&lt;br /&gt;根拠になりそうな箇所を抜粋&lt;br /&gt;&lt;blockquote&gt;Passing Parameters Typed as Generics or Arrays  &lt;br /&gt;However if a generic type takes more than one type argument, such as Dictionary&amp;lt;string, &amp;lt;T&amp;gt;&amp;gt;, ASP.NET AJAX does not generate proxy classes for the types.&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;・配列型(Array)が戻り値。generics.js側では配列型で処理できる。&lt;br /&gt;&lt;br /&gt;動くサンプル&lt;br /&gt;&lt;a href="http://ajax.asp.net/docs/Samples/Sys.Net.WebServiceGenerics/cs/default.aspx"&gt;http://ajax.asp.net/docs/Samples/Sys.Net.WebServiceGenerics/cs/default.aspx&lt;br /&gt;&lt;/a&gt;サンプルソース&lt;br /&gt;&lt;a href="http://ajax.asp.net/docs/ViewSample.aspx?sref=Sys.Net.WebServiceGenerics%23default.aspx"&gt;http://ajax.asp.net/docs/ViewSample.aspx?sref=Sys.Net.WebServiceGenerics%23default.aspx&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Enumerators型を返す&lt;/span&gt;&lt;br /&gt;You cannot access enumerators by using instances of the generated proxy class.&lt;br /&gt;サンプルがエラー無理らしい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4914127768895671227-870900773917304384?l=andresgardenpg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andresgardenpg.blogspot.com/feeds/870900773917304384/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4914127768895671227&amp;postID=870900773917304384' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4914127768895671227/posts/default/870900773917304384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4914127768895671227/posts/default/870900773917304384'/><link rel='alternate' type='text/html' href='http://andresgardenpg.blogspot.com/2007/06/calling-web-services-from-client-script_17.html' title='Calling Web Services from Client Script in ASP.NET AJAXのメモ'/><author><name>あんどれ</name><uri>http://www.blogger.com/profile/08870991466722728109</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
