http://rails.office.drecom.jp/takiuchi/archive/212
3.2.3がリリースされていたので、とりあえずアップデートしたら、夜が明けた…orz
なんか、いろいろと問題が。環境のせいかもしれないけど、いろいろひと段落したら、作者さんかMLに報告するかな…
IEでなぜか接続を繰り返す
どうもiframeのonloadイベントが走らなくて、xhr.rhtmlの97行目付近の以下のコードが動いていないような。
$('#{iframe_id}').onload = function(){clearTimeout(timerId)};
仕方ないので力技。
ms.evaluate = function(js, serialId){ ms.executionQueue[serialId] = js; if(serialId == ms.executionCounter){ while(js = ms.executionQueue[ms.executionCounter]){ eval(js); delete ms.executionQueue[ms.executionCounter]; ++ms.executionCounter; } } if (window.shooting_star_clearTimeout_connector) { window.shooting_star_clearTimeout_connector(); } }; ... Event.observe(window, 'load', function(){ setTimeout(ms.connector = function(){ if(ms.connection) return; if(ms.connecting && ms.connecting != 'xhr') return; var form = $("#{iframe_id}-form"); form.uid.value = #{uid.to_json}; form.tag.value = #{tag.to_json}; form.sig.value = #{sig.to_json}; var timerId = setTimeout(ms.connector, 3000); window.shooting_star_clearTimeout_connector = function() { if (!timerId) { return; } clearTimeout(timerId); timerId = null; window.shooting_star_clearTimeout_connector = null; }; $('#{iframe_id}').onload = function() { if (window.shooting_star_clearTimeout_connector) { window.shooting_star_clearTimeout_connector(); } }; form.submit(); }, meteorStrike.getFlashVersion() >= 6 ? 3000 : 0); }); })();
executeかなぁ…
view.rhtmlの14行目はexecuteかなぁ…
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> <%= javascript_tag %Q{ (function(){ var channel = #{@channel.to_json}; var javascript = #{@javascript.to_json}; var execute = function(){ var ms = parent.parent.meteorStrike[channel]; if(ms) ms.evaluate(javascript, location.hash.slice(1)); else setTimeout(evaluate, 0); # <- }; execute(); })(); }%> </head> </html>
ms.evaluateがうまく動かない
serialIdを判定できていないような感じ。
とりあえずキューまわりのコードはコメントアウト。
ms.evaluate = function(js, serialId){ //ms.executionQueue[serialId] = js; //if(serialId == ms.executionCounter){ // while(js = ms.executionQueue[ms.executionCounter]){ eval(js); // delete ms.executionQueue[ms.executionCounter]; // ++ms.executionCounter; // } //} if (window.shooting_star_clearTimeout_connector) { window.shooting_star_clearTimeout_connector(); } };