2017-10-06 1 views
0

J'ai besoin de "charger une page" dans une page que l'utilisateur utilise déjà au lieu de la rediriger vers cette nouvelle page. Je crois comprendre qu'un iframe est la meilleure façon de le faire. J'aime le dialog box de jQuery comme un emballage pour ce contenu iframe, car il semble agréable et permet à l'utilisateur de repositionner le popup ainsi que de le fermer facilement.accéder à un élément à l'intérieur d'une iframe à l'intérieur d'une boîte de dialogue jquery

J'ai cependant des difficultés à accéder aux éléments de cette iframe. Je veux être en mesure de prendre des données de la fenêtre d'origine de l'utilisateur et de l'ajouter aux éléments d'entrée de la nouvelle iframe, mais je n'arrive pas à trouver la syntaxe pour le faire.

Il y a quelque chose dans le code pour la page iframe qui écrase l'utilisation de jQuery de $, donc je ne peux pas utiliser $('#foo').text('bar'). J'ai essayé de trouver la syntaxe correcte en javascript pur - comme

var a = window.frames["e_frame"].document.getElementById ("title"); 
a.text = 'foobar'; 

e_frame est l'identifiant que j'ai donné à mon iframe, et title est l'identifiant d'un élément qui se charge dans le iframe. Je peux voir ces deux clairement dans la console de développeur, mais je ne peux pas y accéder et je ne suis pas sûr de ce que je fais mal. Taper dans la commande ci-dessus dans la console me donne cette erreur:

VM364:1 Uncaught TypeError: Cannot read property 'document' of undefined 
    at <anonymous>:1:28 

et en tapant window.frames dans la console pour me déboguer me donne beaucoup trop de lignes à passer par car je ne suis pas sûr de ce que je cherche .

Des idées?

+0

Et est la page dans l'iframe du même domaine, en utilisant le même protocole et le port, comme la page parente. – adeneo

+0

L'iframe provient d'un sous-domaine différent (a.mydomain.com vs b.mydomain.com) - Je le charge via Apache ProxyPass - avant de le passer par un proxy j'obtenais l'erreur CORS, mais depuis que je l'ai mis Grâce au proxy, je peux maintenant charger la page et interagir avec elle en utilisant la souris et le clavier comme d'habitude, mais je ne peux pas y accéder directement par le biais du code. –

+0

J'ai essayé la même approche avec une page différente sur mon même sous-domaine et je suis en mesure d'accéder aux éléments de la page via javascript. Je suppose que c'est un problème de CORS. Mince! –

Répondre

1

Avez-vous essayé?

var iframe = document.getElementById("e_frame"); 
var iframe_contents = iframe.contentDocument.getElementById('title'); 
+0

'undefined' pour' var iframe = document.getElementById ("e_frame"); ' –

+0

J'ai fait une erreur. Est-ce que dialog> iframe> element est correct? –

+0

oui, c'est correct –