[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を使ってアクセスすると大丈夫みたい.