Eric H. Jung wrote:
Thank you all for the help!

also having looked at the document, it appears to be for an internet
bank, I hope your intentions are good!

This is for the PasswordMaker extension, which has evolved into a Roboform-like 
utility.

I don't know how exactly it works, but you probably need to use 'content' to get to the...content :)

The problem with recursive JS functions is that the end user most likely ends up with a sluggish feeling browser.

How is recursion any less performant or more sluggish than repeatedly calling a 
function within a
loop (as in your code)?

What?  You've never seen the "Too many recursions" errors?
Also, recursions stacks up quite a bit, and that leads to a sluggish feeling browser.

Ok, this looks like some dialog window so why don't you pass on the window used to open the dialog, because that saves you the above lines.

Actually, it is called from a browser.xul overlay :(

Right, so use something like this:

window.openDialog("chrome://passwordmaker/content/somePWDDialog.xul", null, "chrome, dialog, all", window, infoFields);

and define infoFields[] only once, that also saves a little time (the faster the better).

p.s. replace 'null' with a name if you want.

Why this difficult? I mean, all frames end up in content.frames so why don't you use that instead?

Because I didn't know about content.frames :)

I hate code duplication so I would use something like this:

Is the SpiderMonkey compiler capable of function inlining? If not, I would 
suggest that code
duplication might actually lead to faster code in many cases (ignoring the fact 
that the one-time
compile may take longer as code size increases).

In that case use something like this:

getInputFields(aWindow, aInfoFields)
{
  var frames = (aWindow.frames.length) ? aWindow.frames : aWindow.document;

  for (var fIndex = 0; fIndex < frames.length; fIndex++)
  {
    if (!frames[fIndex].length) {
var inputElements = aFrames.contentDocument.getElementsByName('input');

      for (var i = 0; i < inputElements.length; i++) {
        aInfoFields.push(inputElements[i]);
      }
    } else {
      frames.push(frames[iFrame]);
    }
  }
  window.arguments[1] = aInfoFields;
}

And I should have done so, but like I said, I just types it out of the blue ;)

Now I seriously need a cup of coffee and a proper breakfast!

Later,
/HJ
_______________________________________________
Project_owners mailing list
[email protected]
http://mozdev.org/mailman/listinfo/project_owners

Reply via email to