Захватывать время в Javascript

У меня есть веб-интерфейс для приложения AS / 400 CGI, который позволяет использовать некоторые клавиши F1-F24 (в зависимости от страницы), а также переход на страницу вверх, вниз страницы и т. Д. - они передаются в базовый приложение, которое обрабатывает их соответствующим образом. Например, на данной странице пользователь может либо нажать кнопку F3, либо нажать клавишу F3 - обе они будут устанавливать (скрытую) переменную CmdKey, чтобы иметь имя _K03 и значение F03. Работа с кнопками проста и не имеет проблем. Для работы с пользователями, нажимающими настоящую F-клавишу на клавиатуре, у меня уже давно есть IE-совместимый скрипт, который отлично работает:

function setCmdKeyIE() {                                                        
  var cmdkeycode = "";                                                          
  if (window.event.keyCode != 13 &
    window.event.keyCode != 33 &                 
    window.event.keyCode != 34 &
    window.event.keyCode < 112 ) return;         
  window.event.keyCode = window.event.keyCode + 1000;                           
  if (window.event.shiftKey) window.event.keyCode = window.event.keyCode + 1000;
  switch(window.event.keyCode) {                                                
    case 1013: cmdkeycode = "EN"; break; /* Enter */                            
    case 1033: cmdkeycode = "UP"; break; /* Page Up */                          
    case 1034: cmdkeycode = "DN"; break; /* Page Down  */                       
    case 1112: cmdkeycode = "01"; break; /* F1 */                               
    case 1113: cmdkeycode = "02"; break; /* F2 */                               
    ...(F3 thru F24 here)...
    default:   return;                   /* Anything else should be ignored */
  }                                                         
  window.event.cancelBubble = true;                         
  window.event.returnValue = false;                         
  document.forms[0].CmdKey.value = "F" + cmdkeycode;        
  document.forms[0].CmdKey.name = "_K" + cmdkeycode;        
  if (ONSUBMITFUN() == true) document.forms[0].submit();    
}                                                           

Это не только правильно устанавливает элемент CmdKey, но также переопределяет (останавливает) поведение браузера по умолчанию (если оно есть) от выполнения (например, когда пользователь нажимает клавишу F3, поле поиска не отображается).

Функция setCmdKeyIE () вызывается таким образом:

<body onKeyDown="setCmdKeyIE();" onHelp="return false;">

Теперь мне нужно, чтобы это работало для Firefox (и, возможно, для других браузеров), и у меня возникают всевозможные проблемы. Первоначально я изменил функцию setCmdKeyIE (да, я знаю, что имя следует изменить, как только оно больше не относится к IE, но это меньше всего меня беспокоит!), Чтобы получить событие в качестве параметра (что было бы только в случае с FF, Я думал) или использовать текущее поведение, если оно не прошло (с IE). Я также добавил некоторую другую обработку, чтобы остановить распространение событий FF, но она не работает ...

Вот новый нерабочий код - может ли какая-то добрая душа указать на ошибку моих путей?

function setCmdKey(e) {
  if (!e) {
    var e = window.event; /* IE event-handling */
  }
  var wrkkeyCode = e.keyCode;
  if (wrkkeyCode != 13 &
      wrkkeyCode != 33 &
      wrkkeyCode != 34 &
      wrkkeyCode != 27 &
      wrkkeyCode < 112 ) return;
  wrkkeyCode = wrkkeyCode + 1000;
  if (e.shiftKey) wrkkeyCode = wrkkeyCode + 1000;
  var cmdkeycode = "";
  switch(wrkkeyCode) {
    case 1013: cmdkeycode = "EN"; break; /* Enter */
    case 1033: cmdkeycode = "UP"; break; /* Page Up */
    case 1034: cmdkeycode = "DN"; break; /* Page Down  */
    case 1112: cmdkeycode = "01"; break; /* F1 */
    case 1113: cmdkeycode = "02"; break; /* F2 */
    ...(F3 thru F24 here)...
    default:   return;               /* Anything else should be ignored */
  }
  if (e.stopPropagation) {           /* FF */
    e.stopPropagation();
    e.preventDefault();
  }
  else {                             /* IE */
    e.cancelBubble = true;
    e.returnValue = false;
  }
  document.forms[0].CmdKey.value = "F" + cmdkeycode;
  document.forms[0].CmdKey.name = "_K" + cmdkeycode;
  if (ONSUBMITFUN() == true) document.forms[0].submit();
}

Нужно ли возвращать false из setCmdKeyIE с FF? Верно ли это, даже если эта процедура возвращает false?

Ответы на вопрос(2)

Ваш ответ на вопрос