La mise au point pour le contenu de l'iframe
J'ai une page avec un document.onkeydown
gestionnaire d'événements, et je suis le charger à l'intérieur d'une iframe dans une autre page. Je dois cliquer à l'intérieur de l'iframe pour obtenir le contenu de la page pour lancer "à l'écoute".
Est-il une manière que je peux utiliser JavaScript dans le bord extérieur de la page pour définir le focus à l'intérieur de la page, donc je n'ai pas de cliquer à l'intérieur de l'iframe?
EDIT: réponse à un commentaire:
Le contexte est la fenêtre principale est une lumière en forme de boîte système, sauf qu'au lieu de photos, il montre les iframes, et chaque iframe est une page interactive avec keydown/mousemove gestionnaires. ces gestionnaires ne pas le feu jusqu'à ce que je clique dans l'iframe après avoir montré la lumière-de la boîte-chose.
Je ne suis pas actuellement à la recherche de "setFocus" dans le sens traditionnel du terme, comme autant "d'activer les gestionnaires d'événements sur l'iframe contentDocument"
- Pouvez-vous fournir plus de contexte? Êtes-vous en tapant dans la fenêtre principale et d'attendre que le texte apparaisse (sous une forme ou une autre) dans votre iframe? Cela est pertinent, car le réglage de la focalisation à l'intérieur de votre iframe pourrait interférer avec les utilisateurs de taper dans la fenêtre principale.
Vous devez vous connecter pour publier un commentaire.
J'ai eu un problème similaire avec le jQuery Thickbox (une boîte de dialogue de type widget). La façon dont j'ai résolu mon problème est comme suit:
Le code ne semble pas fonctionner sans le setTimeout(). Basé sur mes tests, cela fonctionne dans les Firefox3.5, Safari4, Chrome4, IE7 et IE6.
setTimeout
.À l'aide de la contentWindow.focus() la méthode, le délai d'attente est probablement nécessaire d'attendre l'iframe pour être complètement chargées.
Pour moi, également à l'aide de l'attribut
onload="this.contentWindow.focus()"
fonctionne avec firefox, dans la balise iframethis.iframe[0].contentWindow.document.body.focus();
Mais j'ai dû modifier cette façon de travailler dans le plugin que j'utilise.Essayer d'écoute pour les événements dans le document d'origine et de passer l'évènement à un gestionnaire dans l'iframe document.
j'ai eu un problème similaire où j'étais en essayant de se concentrer sur un txt dans un iframe chargé à partir d'une autre page. dans la plupart des cas, il fonctionne. Il y a un problème là où il mettrait le feu dans FF lors de l'iFrame a été chargé, mais avant c'était visible. de sorte que l'objet ne semblait pas être réglé correctement.
j'ai travaillé autour de ce avec un similaires solution à cheeming la réponse ci-dessus
J'ai découvert que FF déclenche les événements de focus pour les iframe.contentWindow mais pas pour les iframe.contentWindow.document.
Chrome, par exemple, peut gérer les deux cas. donc, j'ai juste besoin de lier mes gestionnaires d'événements à iframe.contentWindow afin d'obtenir des choses de travail.
Peut-être que cela aide quelqu'un ...
Voici le code pour créer un iframe à l'aide de jQuery, ajouter le document, sondage jusqu'à ce qu'il est chargé, puis se concentrer sur elle. C'est mieux que le réglage de l'arbitraire d'un délai d'attente qui peut ou peut ne pas fonctionner en fonction de combien de temps l'iframe de chargement.
Le code de détection lorsque l'iframe est chargé a été adapté à partir Biranchi's réponse à Comment vérifier si iframe est chargé ou s'il a un contenu?
C'est quelque chose qui a fonctionné pour moi, même si ça sent un peu mauvais:
hmmm. il a également fait défiler vers le bas de son contenu. Suppose que je devrais être en insérant le mannequin zone de texte en haut.