javascript/jquery: focus() funktioniert nicht

Möchte ich den Fokus auf eine spezielle id (in roundcube) durch eine Tastenkombination. Der html-Code wird

   ... 
   <div id="mainscreen">
    <div id="messagetoolbar" class="toolbar">
    <div id="mailview-left" style="width: 220px;">
    <div id="mailview-right" style="left: 232px;">
    ...

Ich habe versucht, die folgenden:

 //Strg + Tab, um in Nachrichtenbereich zu kommen
 ...
 else if (event.keyCode == 9 && event.ctrlKey) {
 alert("taste erkannt");
 //document.getElementById("messagetoolbar").focus();
 //$("#messagetoolbar").focus();
 setTimeout(function() { $('#messagetoolbar').focus(); alert("zeit"); }, 3000);
 }
 ...

Erste Warnung und die zweite Warnung wird angezeigt, aber kein Fokus auf id messagetoolbar. Hat jemand eine Idee?

Danke Ihnen sehr.

Edit: ich denke ich sollte er es besser beschreiben: ich möchte markieren Sie die erste Zeile/E-Mail in der E-Mail-Posteingang in roundcube. Der Eingang ist ein Tisch mit einem tr-tag..., wenn ich versuche, Ihre Lösung der ersten Zeile ist gestrichelt, auch, aber mit enter kann ich nicht öffnen Sie die E-mail und mit anderen Tasten, ich kann nicht MARKIEREN Sie die erste Zeile/E-mail... ich glaube, ich habe zu "simulieren Sie einen Links-klick" auf die erste Zeile markiert...?

Jetzt habe ich versucht, die Verwendung von jquery .trigger. Der html-Code der Posteingang-Tabelle ist

 <table id="messagelist" class="records-table messagelist sortheader fixedheader">
  <thead>
  <tbody>
     <tr id="rcmrow27428" class="message">
         <td class="threads"></td>
         <td class="date">16.04.2014 13:41</td>
         <td class="fromto">
 ...

Habe ich versucht zu verwenden...

 $('#messagelist tr').eq(1).addClass('message selected focused').removeClass('unfocused').trigger("click");

...aber es funktioniert nicht: Es fügt eine entfernt die Klassen aber nicht wirklich im Fokus der Linie 🙁 Mit "Knöpfen" funktioniert es.

BEARBEITEN WIEDER: ich denke, dass die Datei list.js von roundcube ist wichtig für diese Frage. Dort habe ich Folgendes gefunden:

/**
 * Set focus to the list
 */
focus: function(e)
{
  var n, id;
  this.focused = true;

  for (n in this.selection) {
    id = this.selection[n];
    if (this.rows[id] && this.rows[id].obj) {
      $(this.rows[id].obj).addClass('selected').removeClass('unfocused');
    }
  }

  //Un-focus already focused elements (#1487123, #1487316, #1488600, #1488620)
  //It looks that window.focus() does the job for all browsers, but not Firefox (#1489058)
  $('iframe,:focus:not(body)').blur();
  window.focus();

  if (e || (e = window.event))
    rcube_event.cancel(e);
},

Weiß jemand, wie zu ändern oder zu verwenden, bezogen auf meine Frage? Danke!

InformationsquelleAutor Andre | 2014-04-24
Schreibe einen Kommentar