What I am doing is like a Super Greasemonkey framework that cuts
through all of XUL's bullshit xpcnativewrappers and garbage and let's
people script in addons the exact same way they do a normal web page.
Any ideas/help are really appreciated.

On Apr 17, 10:11 am, csuwldcat <[email protected]> wrote:
> Haha this thread is getting funny, Aaron I mean the this keyword
> reference in the lib (here are some functions inside Mootools:
>
>         newElement: function(tag, props){
>                 if (Browser.Engine.trident && props){
>                         ['name', 'type', 'checked'].each(function(attribute){
>                                 if (!props[attribute]) return;
>                                 tag += ' ' + attribute + '="' + 
> props[attribute] + '"';
>                                 if (attribute != 'checked') delete 
> props[attribute];
>                         });
>                         tag = '<' + tag + '>';
>                 }
>                 return $.element(this.createElement(tag)).set(props);
>         },
>
>         newTextNode: function(text){
>                 return this.createTextNode(text);
>         },
>
>         getDocument: function(){
>                 return  this;
>         },
>
>         getWindow: function(){
>                  this.window;
>         }
>
> So I want to change the 'this' ref in the library, set a new context
> if you will.  So not THIS window object, but THAT window object.
>
> This is from the base event constructor:
>
> Syntax:
>
> new Event([event[, win]]);
> Arguments:
>
> event - (event) An HTMLEvent Object.
> win - (window, optional: defaults to window) The context of the event.
>
> I want to be able to set a context for all actions to something
> different, jQuery does this with a context option in its $ selector
> function.  I have hacked the core lib the to do what I want but i
> would rather not, here is the same lines of code modified:
>
>         newElement: function(tag, props){
>                 if (Browser.Engine.trident && props){
>                         ['name', 'type', 'checked'].each(function(attribute){
>                                 if (!props[attribute]) return;
>                                 tag += ' ' + attribute + '="' + 
> props[attribute] + '"';
>                                 if (attribute != 'checked') delete 
> props[attribute];
>                         });
>                         tag = '<' + tag + '>';
>                 }
>                 if(typeof tab == 'undefined'){return 
> $.element(this.createElement
> (tag)).set(props);} else{ return $(tab.document.createElement(tag)).set
> (props); }
>         },
>
>         newTextNode: function(text){
>                 return this.createTextNode(text);
>         },
>
>         getDocument: function(){
>                 return (typeof tab == 'undefined') ? this : tab.document;  // 
> this
> line used to be: return this
>         },
>
>         getWindow: function(){
>                 return (typeof tab == 'undefined') ? this.window : 
> tab.window;  //
> this line used to be: return this.window
>         }
>
> See all those tab. references, that is what I am doing to give these
> functions new contexts in which to operate on.  I am doing so because
> I am writing a compatibility layer for working fluidly across FF tab
> documents from a central XUL overlay via FF addon.  You see the this
> natively referred to in Mootools kept referencing the wrond window,
> the XUL overlay window of the FF addon.  I had to make sure it always
> thought in terms of the tab I was intending to deal with, thus the
> mods.
>
> What I needed was a way to change the refs globally in the Mootools
> object, so that the context can be changed fluidly.  Any thoughts?  I
> am submitting this framework to Rey Bango and it is going to be a
> tutorial thing on MDC, it would benefit us all if there was a better
> way to change contexts than through lib modifications.
>
> - Daniel

Reply via email to