チェンジセット 104

差分発生行の前後
無視リスト:
コミット日時:
2007/11/17 03:26:35 (1 年前)
コミッタ:
jirox
ログメッセージ:

時間を待たなくても実行できるように修正

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • jirox/as3/sample/crossdomainbridge/CrossDomainBridge.js

    r103 r104  
    2929var CrossDomainBridge = function(url, params, callbacks, method) { 
    3030        // externalという文字列が入っていないとIEで動作しないので注意 
    31         this.id = 'externalCrossDomainBridge_' + CrossDomainBridge._sequense; 
    32         this.containerId = 'containerCrossDomainBridge_' + CrossDomainBridge._sequense; 
     31        this.id = 'externalCrossDomainBridge_' + CrossDomainBridge._sequence; 
     32        this.containerId = 'containerCrossDomainBridge_' + CrossDomainBridge._sequence; 
     33        this.flashCallbackName = 'flashCallback_' + CrossDomainBridge._sequence; 
    3334        this.url = url; 
    3435        this.params = params; 
     
    3637        this._createContainer(); 
    3738        this._createSwf(); 
    38         CrossDomainBridge._sequense++; 
     39        CrossDomainBridge._sequence++; 
    3940}; 
    4041 
    41 CrossDomainBridge._sequense = 0; 
     42CrossDomainBridge._sequence = 0; 
    4243 
    4344CrossDomainBridge.prototype = { 
     
    5051        request: function() { 
    5152                var _this = this; 
    52                 setTimeout(function() { 
     53                CrossDomainBridge[this.flashCallbackName] = function() { 
     54                        delete(CrossDomainBridge[_this.flashCallbackName]); 
    5355                        _this._registerCallbacks(); 
    5456                        _this.swfObject.request(_this.url, _this.params); 
    55                 }, 500)
     57                }
    5658        }, 
    5759 
     
    6971         */ 
    7072        _createSwf: function() { 
     73                var time = new Date().getTime(); 
    7174                if (navigator.appName.indexOf("Microsoft") != -1) { 
    72                         this.element.innerHTML = '<OBJECT id=' + this.id + ' height=1 width=1 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000><PARAM NAME="Movie" VALUE="CrossDomainBridge.swf"><PARAM NAME="Src" VALUE="CrossDomainBridge.swf"><PARAM NAME="WMode" VALUE="Transparent"><PARAM NAME="AllowScriptAccess" VALUE="always"></OBJECT>'; 
     75                        this.element.innerHTML = '<OBJECT id=' + this.id + ' height=1 width=1 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000><PARAM NAME="Movie" VALUE="CrossDomainBridge.swf?' + time + '"><PARAM NAME="Src" VALUE="CrossDomainBridge.swf?' + time + '"><PARAM NAME="WMode" VALUE="Transparent"><PARAM NAME="AllowScriptAccess" VALUE="always"><PARAM NAME="FlashVars" VALUE="requestCallback=' + this.flashCallbackName + '"></OBJECT>'; 
    7376                } else { 
    74                         this.element.innerHTML = '<embed width="1" height="1" flashvars="allowScriptAccess=always" wmode="transparent" quality="high" name="' + this.id + '" id="' + this.id + '" style="" src="CrossDomainBridge.swf" type="application/x-shockwave-flash"/>'; 
     77                        this.element.innerHTML = '<embed width="1" height="1" flashvars="allowScriptAccess=always&requestCallback=' + this.flashCallbackName  + '" wmode="transparent" quality="high" name="' + this.id + '" id="' + this.id + '" style="" src="CrossDomainBridge.swf?' + time + '" type="application/x-shockwave-flash"/>'; 
    7578                } 
    7679        }, 
  • jirox/as3/src/net/jirox/crossdomainbridge/CrossDomainBridge.as

    r103 r104  
    4141                        ExternalInterface.addCallback('request', request); 
    4242                        ExternalInterface.addCallback('registerCallback', registerCallback); 
     43                        // SWFの用意ができたので、flashvarsに指定されたrequestCallbackを実行する 
     44                        ExternalInterface.call('CrossDomainBridge.' + loaderInfo.parameters['requestCallback'], null); 
    4345                } 
    4446