No, it doesn't work with displayMessage() too, and I am using version
0.1.2.
But thanks for your suggestion, this is working example:

function injectJS(aFileURL){

  var ios = Components.classes["@mozilla.org/network/io-service;
1"].getService(Components.interfaces.nsIIOService);
  var url = ios.newURI(aFileURL, null, null);
  if (!url || !url.schemeIs("file")) throw "Expected a file URL.";
  var file = url.QueryInterface
(Components.interfaces.nsIFileURL).file;

  var data = '';
  var fstream = Components.classes["@mozilla.org/network/file-input-
stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
  var sstream = Components.classes["@mozilla.org/scriptableinputstream;
1"].createInstance(Components.interfaces.nsIScriptableInputStream);
  fstream.init(file, -1, 0, 0);
  sstream.init(fstream);
  var str = sstream.read(4096);
  while (str.length > 0) {
    data += str;
    str = sstream.read(4096);
  }
  sstream.close();
  fstream.close();

  eval(data);

}

injectJS('file://C:/Disk/Web/ubiq/commands.js');

On Nov 29, 10:23 pm, Blair McBride <[EMAIL PROTECTED]> wrote:
> Hmm, that should work - pretty sure we've used that to load local files
> in the past. Note that window.alert() won't work in commands - use
> displayMessage() or CmdUtils.log() instead. So if that's what you've
> tested with, then that's probably the problem.
>
> Failing that, have a look 
> at:https://developer.mozilla.org/en/Code_snippets/File_I%2f%2fO#Reading_...
>
> Its not as simple, but it should at least work.
>
> Also, what version of Ubiquity are you running? 0.1.2 or the development
> version?
>
> - Blair
>
> On 30/11/2008 3:25 AM, Aurimas 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to