Changing Javascript Focus in onClick event?

I think your problem is calling your focus method after return false. your code should be like that :

<a href="#" 
    onclick="show_lightbox();focus_on_lightbox();return false;">
    show lightbox
</a>

Here is the function that finally worked

function focus_on_lightbox(seconds) {
  var seconds_waited
  seconds_waited = seconds
  document.getElementById(lightbox_content_id).focus(); 
  seconds_waited += 100;

  if (document.getElementById(lightbox_content_id) != document.activeElement && seconds_waited < 2000)
    setTimeout("focus_on_lightbox(" + seconds_waited + ");", 100);
  {
  }
}

So why did console.log seem to affect setting the focus? Before I was using this function to pause between attempts of changing the focus.

function pause(milliseconds) {
    var dt = new Date();
    while ((new Date()) - dt <= milliseconds) { /* Do nothing */ }
}

This causes javascript to constantly be doing something and I think it wasn't giving the document time to render or update or something. The console.log seemed to break this lock and give the page a chance to change its focus.

When I changed approaches to using the timeout to pause between attempts, console.log was no longer needed!

Thanks bmoeskau for pointing me in the right direction.