Simulando um pressionamento de tecla da guia usando JavaScript

Gostaria que o navegador agisse como se o usuário tivesse pressionado a tecla Tab ao clicar em algo. No manipulador de cliques, tentei as seguintes abordagens:

var event = document.createEvent('KeyboardEvent');
event.initKeyEvent("keypress", true, true, null, false, false, false, false, 9, 0);
this.input.focus()[0].dispatchEvent(event);

E jQuery:

this.input.focus().trigger({ type : 'keypress', which : 9 });

... que tirei deaqu.

A primeira abordagem parece ser a melhor aposta, mas não funciona muito bem. Se eu alterar os dois últimos parâmetros para 98, 98, de fato, a 'b' será digitado na caixa de entrada. Mas 9, 0 e 9, 9 (o primeiro dos quais tirei direto do site do MDC) me deram esses erros no firebug no FF3:

Permission denied to get property XULElement.popupOpen
[Break on this error] this.input.focus()[0].dispatchEvent(event);

Permission denied to get property XULElement.overrideValue
[Break on this error] this.input.focus()[0].dispatchEvent(event);

Permission denied to get property XULElement.selectedIndex
[Break on this error] this.input.focus()[0].dispatchEvent(event);

Permission denied to set property XULElement.selectedIndex
[Break on this error] this.input.focus()[0].dispatchEvent(event);

Eu ouvi esses eventos (sem uma definição clara de 'tais') 'não confiáveis', o que pode explicar esses erro

A segunda abordagem faz com que qualquer valor que eu coloque como evento.que seja passado como evento.que, mas sem efeito (mesmo que eu use 98 em vez de 9, nenhum 'b' será digitado na caixa.) Se eu tentar definir event.data no objeto que estou passando, acaba indefinido quando o evento é acionado. O que segue é o código que estou usando para visualizar isso:

$('#hi').keypress(function(e) {
  console.log(e);
});

Algumas outras idéias?

questionAnswers(5)

yourAnswerToTheQuestion