2010-11-07 8 views
16

Est-il possible d'utiliser jQuery pour créer un élément et y ajouter du contenu html sans que l'attribut src ne soit spécifié?Créer un élément <iframe> et y ajouter du contenu html avec jQuery

Le problème est que je dois créer un iframe et j'ai déjà son contenu (je l'ai compris comme réponse AJAX). Malheureusement, je ne peux pas spécifier l'URL à partir de laquelle j'obtiens l'attribut src. Je voudrais faire quelque chose comme:

$('<iframe id="someId"/>').append(response).appendTo("#someDiv"); 

Répondre

34

Essayez ceci:

$('<iframe id="someId"/>').appendTo('#someDiv') 
          .contents().find('body').append(response); 
+2

Pouvez-vous ajouter le contenu à l'iframe avant de l'ajouter au dom? Cuz qui serait incroyable. Un million de votes pour cela si je pouvais :) – dezman

2

Pourquoi utiliser un iframe alors? Collez le tout dans un autre conteneur. Je ne peux pas penser à un avantage de l'iframe sauf que vous pouvez charger une page à partir d'un attribut src. Je suppose que si vous avez besoin d'une iframe à d'autres fins, comme vous chargez une page mais que vous voulez la remplacer par la réponse ajax, vous pouvez utiliser jQuery pour échanger l'iframe d'une div et revenir au besoin .

L'autre possibilité est qu'au lieu d'ajax, modifiez votre script ajax php pour afficher la page entière que vous voulez dans l'iframe. Ensuite, utilisez jQuery pour changer l'adresse de la page demandée dans l'iframe avec de nouveaux paramètres pour afficher le contenu mis à jour.

+1

Je trouve un cas où cela est utile. Mes utilisateurs voulaient un moyen d'imprimer le contenu d'une section spécifique d'une page hautement dynamique. Au début, j'ai ouvert une nouvelle fenêtre et j'ai ajouté mon contenu à ça, mais le pop-up était collant. Donc à la place, j'ai utilisé un iframe vide auquel je redirige le contenu, puis j'appelle window.print sur l'iframe: window.frames ['someId']. Print(); –

+0

Voici un autre cas: les iframes sont utilisés pour superposer les contrôles ActiveX dans IE, qui sont par ailleurs au-dessus de tout autre élément. Mais s'il existe une sorte de contrôle d'accès personnalisé, la seule façon de procéder est de suivre la procédure dans la bonne réponse. – malber

+0

Si vous souhaitez signaler une erreur AJAX et que l'erreur revient en tant que page HTML, il est plus facile (et probablement le meilleur) de coller toute la réponse d'erreur dans un iframe. – mhenry1384