2009-07-24 8 views
4

AJAX(iFrame)を使用してファイルをアップロードした後にアクセスするMooToolsクラスのメソッドがあります。 Javascriptをその負荷がクラスのメソッドを呼び出す必要がありますが、私のような何も使用してアクセスすることができませんiFrameのページが実行されていること: クラス名:クラス外からのMooToolsクラスメソッドへのアクセス

parent.window myMain:メイン のvarクラスがで初期化されました。 myMain.myMethod parent.window.Main.myMethod

これも可能ですか?それがどうすればいいのですか?

答えて

10

構文は、私が好む:

var MyClass = new Class({ 

    /* list regular non-static methods her as usual */ 

}); 

MyClass.staticMethod = function() 
{ 
    /* body of static function */ 
}; 

利点をあなたはしている:

  • あなたは内部MyClass.staticMethod()経由の静的メソッドを呼び出すことができますし、あなたのクラス
  • の外にそれはすることはできません誤って静的メソッドでこのポインタにアクセスできません。

内部フレーム内の静的メソッドにアクセスするにはwindow.parent.MyClass.staticMethod();

+0

staticMethodから新しいクラス(...)で定義された一般的なメソッドにアクセスできますか?すなわち: 'MyClass.staticMethod = function(){this.privateMethod()}; ' –

+1

いいえ、これはできません、私の答えの2番目の点を参照してください。静的メソッドは他の静的メソッドにしかアクセスできません。 'this'にアクセスする必要がある場合は、通常のメソッドを作成します。 – sebasgo

0

これは私にとって役に立ちます(iframeも)。

メインウィンドウです。 iframe内に

var T=new MyClass(); 

(Tが初期化された後にロードします!)

window.parent.T.anyMethodOfMyClass() 
+0

"window.parent.myMain undefined" – trobrock

0

はちょうどそれを考え出しました。 iFrameページで、私は以下を使用する必要があります:

window.parent.Main.prototype.myMethod();

アクセスする適切な方法ではないかもしれませんが、機能します。

関連する問題