My ubiquity commands script has become very large and hard to
maintain. So I want to move some commands in their own js files. And
when I try to inject local js file with ubiquity commands to my main
script, it says that CmdUtils is undefined.
On Nov 29, 6:23 pm, [EMAIL PROTECTED] wrote:
> What is it exactly that you are trying to do?
>
> On Sat, Nov 29, 2008 at 4:15 PM, Aurimas <[EMAIL PROTECTED]> wrote:
>
> > Problem is that commands.js can't access CmdUtils.CreateCommand() and
> > create new commands.
>
> > function cmd_load(){
> > CmdUtils.injectJavascript('file://C:/Disk/Web/ubiq/commands.js',
> > Utils.safeWrapper(function(){
> > CmdUtils.getWindowInsecure().testAlert(); // alerts 'ok'
> > CmdUtils.getWindowInsecure().createCommand(); // returns
> > 'CmdUtils is not defined'
> > })
> > )
> > }
>
> > == commands.js ==
> > function testAlert(){ window.alert('ok'); };
> > function createCommand(){
> > CmdUtils.CreateCommand({
> > name: 'test',
> > preview: function(pblock){ pblock.innerHTML = 'command loaded'; }
> > });
> > };
>
> > On Nov 29, 5:40 pm, [EMAIL PROTECTED] wrote:
> > > Aurimas,
>
> > > Are we still discussing Ubiquity commands?
>
> > > How about:
>
> > > CmdUtils.loadJQuery = function loadJQuery(func) {
> > > CmdUtils.injectJavascript(
> > > "file://C:/Disk/Web/ubiq/commands.js'",
> > > Utils.safeWrapper( function() {
> > > var oObjectWithinCommandJS =
> > > CmdUtils.getWindowInsecure().ObjectWithinCommandJS;
> > > displayMessage(oObjectWithinCommandJS);
> > > })
> > > );
>
> > > - Mayuresh
>
> > > On Sat, Nov 29, 2008 at 2:25 PM, Aurimas <[EMAIL PROTECTED]>
> > wrote:
>
> > > > Thanks for your answer. It works. But not for local files. This
> > > > command doesn't work:
>
> > > > function cmd_load(){
> > > > jQuery.get('file:///C:/Disk/Web/ubiq/commands.js', function(data) {
> > > > window.alert(data);
> > > > });
> > > > }
>
> > > > Is it possible to load a local file?
>
> > > > On Nov 29, 1:25 pm, Blair McBride <[EMAIL PROTECTED]> wrote:
> > > > > Sorry for jumping in so late on this...
>
> > > > > CmdUtils.injectJavascript() will inject JavaScript into the *current
> > tab
> > > > > content*. Which means it will run with content privileges - not what
> > you
> > > > > want if you want it for your command. Then accessing that code opens
> > the
> > > > > possibility of other code from that page intercepting it, and gaining
> > > > > chrome privledges - which would be very bad.
>
> > > > > The correct way of doing this is to load it via a XMLHttpRequest (ie,
> > > > > Ajax). Using jQuery, the code would be:
>
> > > > > jQuery.get("http://example.com/script.js", function(data) {
> > > > > eval(data);
> > > > > doStuff();
>
> > > > > });
>
> > > > > Just be very careful about what code you're fetching. Make sure you
> > can
> > > > > definitely trust it, as it will be running with full chrome
> > privileges,
> > > > > so can do everything a command can do. Ubiquity doesn't yet have an
> > easy
> > > > > way to ensure a safe sandbox, although it should by the time v0.2
> > comes
> > > > out.
>
> > > > > If its just JSON data, use Utils.decodeJson() instead - its always
> > safe
> > > > > to use that, even with untrusted data.
>
> > > > > Also, note that if any commands depend on the functionality in remote
> > > > > code, they won't work until that code is loaded. So you may wish to
> > put
> > > > > all your commands (ie, calls to CmdUtils.CreateCommand()) inside the
> > > > > callback (ie, where the call to doStuff() is). You could also load it
> > > > > inside of every preview/execute method of the commands that use
> > depend
> > > > > on that code (I think the browser should cache the remote script
> > > > > automatically).
>
> > > > > - Blair
>
> > > > > On 28/11/2008 4:39 AM, [EMAIL PROTECTED] wrote:
>
> > > > > > Hi,
>
> > > > > > I am not sure if this was covered before, but I have a external .JS
> > lib
> > > > > > that I want to be able to call within my ubiquity command. Can
> > anyone
> > > > > > give me any pointers? From some previous thread, I think
> > > > > > CmdUtils.injectJavascript needs to be used. Is this correct?
>
> > > > > > thanks,
>
> > > > > > --
> > > > > > Mayuresh
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"ubiquity-firefox" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/ubiquity-firefox?hl=en
-~----------~----~----~----~------~----~------~--~---