[Diary/2011/August]

InfoWindow+iframeの中身にjQueryでアクセス / 2011-08-11 (木)

今日

また眠れず4:00起床.プログラミングの続き.
8:20学校着.久々に日野へのバイクだったが,楽しくて楽で,これは堕落するな.
昼過ぎに学生の相談など.
18:30学校発.

InfoWindow内で動的生成したiframeの中の要素にjQueryでアクセスする方法.
InfoWindow以外なら,以下のようなname属性を使ってアクセスするという情報が一般的な方法らしいんだが,

var iframe = document.createElement('IFRAME');
iframe.setAttribute("name", "iframe1");
infoWindow.setContent(iframe); //InfoWindowのインスタンスに登録
infoWindow.open(map, marker);

var timerID1 = setTimeout(function(){
      iframedoc.writeln("<body></body>");
      iframedoc.body.innerHTML = '<div id="iframe_message">Message</div>';
      
      var timerID2 = setTimeout(function(){
            $("iframe:iframe1").contents().find("#iframe_message").html("<p>This is test</p>");
      }, 100);
}, 100);

これではInfoWindowの場合アクセス不可で,
iframeを作った時に

iframe.setAttribute("id", "infoWindowFrame");

で,InfoWindowのidを指定してやり(なのでInfoWindowは同時に一つしか開かない限定?),

$("iframe:#infoWindowFrame").contents().find("#iframe_message").html("<p>This is test</p>");

のようにidを使ってアクセスすると大丈夫みたい.


[Diary/2011/August]

InfoWindow+iframeで中身を動的生成 / 2011-08-10 (水)

今日

色々あって4:00起床.プログラミングの続き.
8:30学校着.すぐプログラミングの続き.一つ目の問題解決.まさかこんなんだとは.
午後一で嫌な話を聞く.何でそうなってる.
12:00〜13:00 時差ボケと睡眠不足による仮眠.
13:00〜15:00 研究室ミーティング.
強烈な目眩で横になったが目が覚めたら3時間経ってしまっていて,20:00学校発.

GoogleMaps APIのInfoWindowの中にiframeを作ってやって,その中に書き込む方法.
どうやっても出来ないできないとずっと悩んでいたが……解決法はsetTimeoutで時間を空けてやるというマジで最悪な方法であった.

var iframe = document.createElement('IFRAME');

iframe.setAttribute("frameBorder", "1");
iframe.setAttribute("scrolling", "yes");
iframe.setAttribute("name", "iframe1");

iframe.style.width = "200px";
iframe.style.height = "200px";
iframe.src = "about:blank";

infoWindow.setContent(iframe); //Google Maps APIのinfoWindowのインスタンスにセット
infoWindow.open(map, marker);

var timerID = setTimeout(function(){
      var iframedoc = iframe.contentDocument;
      iframedoc.writeln("");
      iframedoc.body.innerHTML = 'コンテンツの中身';
}, 100);

つまり一度openしてからsetTimeoutしないとcontentDocumentにはアクセス不可ということ.
そういやListenerもそうやってた……なんでこんなクソ仕様なんだ.

だからここに配置したボタンにListenerを登録するときは,更にsetTimeoutでListenerを登録する関数をネストしなきゃいけない……ってことだよな.
なんてこった.


[Diary/2011/August]

通常復帰 / 2011-08-09 (火)

2週間近くの連続出張(国内国外)が終り,今日から通常復帰.

今日

8:05学校着.
それぞれ別件で問い合わせと回答のメールを4本.
電話2件,学生との話し合い2件,うち1つは面談というか人生相談というか何というか.
その後書類一つ作成して,プログラミング.時差ボケのために仮眠を挟まなきゃいけないのが辛すぎる.
18:20学校発.

やっぱりGoogle Maps APIとjQueryの相性は悪いような気がする.
InfoWndowの中へjQueryでアクセスすんのが未だに出来てない.
かといって通常のJavaScriptのDOMで書き込むのも出来てない……なんだ俺.

原爆の日関係で,「核は人間と相容れない.原発もやめて太陽光などの自然エネルギに転換を」なんてコメントが多いが,太陽光エネルギって核融合なのだが.
それってつまり,人間が制御できなくても遠くに原発作れば安全って話と同じじゃないのか.


[Diary/2011/July]

なんでこんなん / 2011-07-26 (火)

今日

8:20学校着.メールを書いてから,事務関係の確認作業.
12:00〜12:30,木曜日の中間発表の打ち合わせ.
外で用事を二つこなして戻って,その後発表準備……のはずなんだが,問題2つのうち1つが解決出来ず.もしかしたら問題もっと出てくるかも.下手にデモ用のプログラムをアップデートすると酷いことになる.
18:30学校発.

そして本質的にやるべき,8/3発表の曲のプログラムの改善とか,スライドとかには,手が殆ど付けられていないという恐ろしい状態.
なんでこんな状態を強いられているのか.


[Diary/2011/July]

なんかもうダメ / 2011-07-25 (月)

今日

8:40学校着.メールを4本と色々な確認.
10:30から土曜日の研究室公開の準備.
13:00から会議で,その後公開の準備の続き.事務書類作りなど.
15:40〜19:00で授業.帰宅.

ホントに自分の仕事してる時間がない.
そして,しょうがないとはいえ,金もえらい勢いでなくなる.