FYI, Tobie's working on Prototype support for Google Caja[1], which is
around doing exactly the sort of thing.  (Caja is Spanish for "box".)
It's not released yet, but coming soon.  (And yes, "Google Caja" does
read a bit like the name of an 80's one-hit-wonder on first
glance. ;-)  Less so when spoken, since that 'j' is an 'h' sound [with
a bit of throat] -- "CA-ha").

Separately, remember that in addition to defining several symbols
(usually at global scope), Prototype: 1. Modifies the prototypes of
several things like Function, Array, and such; 2. Directly modifies
globals like document, Object; and 3. (Where possible) Modifies the
prototypes of some DOM elements.

I have the impression that at the moment, the best way to use
Prototype and jQuery in the same project is to use jQuery's no-
conflict mode.[2]  (That doesn't mean you necessarily have to use
"jQuery" instead of "$" everywhere, see the link for details on
shorthand options.)

[1] http://code.google.com/p/google-caja/
[2] http://docs.jquery.com/Using_jQuery_with_Other_Libraries

T.J. Crowder
tj / crowder software / com
Independent Software Engineer, consulting services available

On Mar 16, 4:01 am, Josh Powell <seas...@gmail.com> wrote:
> First, thanks for the reply.  This seemed like it should work to
> contain Prototype, but it doesn't...
>   $(function() {
>       console.log($('mySelect'));
>       (function() {
>               $.getScript('/cfgmgr/js/lib/prototype-', function() {
>                   console.log($('mySelect'));
>               });
>       })();
>       console.log($('mySelect'));
>       setTimeout("console.log($('mySelect'))", 1000);
>   });
> Using jQuerys getScript to bring in Prototype, the console.log with
> the timeout set returns the same thing as the console.log inside of
> the callback from the getScript.  In case you don't know jQuery:
> $(function() {
> });
> is shorthand for executing this anonymous function once the page
> loads.  The first
>  console.log($('mySelect'));
> shows an empty array, which it should because $ is similar to
> Prototypes $$ and should have a # in front of it to get by id.
> next, the
> (function() {
> })();
> is meant to contain the loading of Prototype.
> The console.log inside of the callback executes as expected, and logs
> the element with an id of mySelect.  The console.log called just
> outside of the containing anonymous function returns an empty array,
> as expected, as prototype hasn't had time to load just yet but the
> console.log inside of the timeout logs the element with the id of
> mySelect, using prototype.  So, everything that runs after prototype
> has loaded by the getScript will have access to Prototype.
> I'm not sure if loading the text server side in the (function() {})();
> will work either, possibly this doesn't work because Prototype changes
> the prototype of objects declared outside of the (function(){})();
> which bears further testing.
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com
To unsubscribe from this group, send email to 
For more options, visit this group at 

Reply via email to