Vyhledávání na webu

javascript - Greybox: Nelze přesunout fokus na ovládací prvek, protože je neviditelný, není povolen nebo je typu, který fokus nepřijímá


Možná duplicita:
JavaScript: Chyba viditelnosti v Internet Exploreru při nastavování fokusu na vstupní prvek

Mám stránku, která se načítá v greyboxu. Nastavil jsem fokus pomocí document.getElementById("textfield").focus() - to funguje dobře při přímém volání stránky.

Ale když je načteno v greyboxu, nastavení fokusu při události onload() vrací:

Nelze přesunout fokus na ovládací prvek, protože je neviditelný, není povolen nebo je typu, který fokus nepřijímá

Pozdější volání funguje dobře.

Máte nějaké nápady?

Díky!

Odpověď č. 1

Je to dobře známý problém v IE.

O tom si můžete přečíst zde.

Řešením je použít funkci setTimeout(), aby se odložil čas vykonání focus().

musíte vyměnit svůj řádek:

document.getElementById("textfield").focus();

s následujícím:

setTimeout(function() { document.getElementById("textfield").focus(); }, 10);

Odpověď č. 2

Jen rychle odpovídám na toto... musel jsem to dnes večer vyřešit. Použil jsem setTimeout, aby se funkce focus zavolala krátce poté, co se zobrazí stránka greybox.

V mé verzi jsem použil trochu jQuery, protože už bylo v tomto projektu, ale stejně tak byste mohl použít window.onload()

<script type="text/javascript">
  $(document).ready(function() {
    setTimeout ( "document.getElementById('AdminID').focus(); ", 500 ); 
  });
</script>