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
>
> --
> 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
-~----------~----~----~----~------~----~------~--~---