views:

725

answers:

3

I have a method inside of a MooTools class that I want to access after uploading a file with AJAX (iFrame). The Javascript that the iFrame page runs when it loads should call the method of the Class, but I am unable to access it using anything like: Class name: Main var class was initialized in: myMain

parent.window.myMain.myMethod parent.window.Main.myMethod

Is this even possible? If it is how do I do this?

A: 

This works for me (iframes too).

In main window.

var T=new MyClass();

In Iframe (which loads after T was initialized!)

window.parent.T.anyMethodOfMyClass()
Itay Moav
I just keep getting "window.parent.myMain undefined"
trobrock
A: 

Just figured it out. On the iFrame page, I need to use:

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

Might not be the proper way of accessing it, but it works.

trobrock
+7  A: 

The syntax I prefer:

var MyClass = new Class({

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

});

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

The advantages you have are:

  • You can call the static method via MyClass.staticMethod() inside and outside of your class
  • It is not possible to accidentally access the this-pointer in the static method as it is not available

To access the static method in an inner frame use can window.parent.MyClass.staticMethod();

sebasgo