2010-06-12 3 views
1

Mon but général est de créer un éditeur que je peux habiller en utilisant jQuery UI (en créant une barre d'outils personnalisée qui utilise des appels d'intégration), en utilisant TinyMCE.Déplacer iFrame dans le DOM en utilisant jQuery

Disons que j'ai un éditeur TinyMCE sur une page. L'éditeur réel est un iFrame contenu dans beaucoup de code de table horrible, qui est également où la barre d'outils actuelle (à mettre au rebut) est. Je veux juste l'iframe à l'intérieur d'un div - idéalement se débarrasser du code de la table.

Alors ... Je veux transformer:

<table> 
    <tr> 
     <td><iframe id="xyz"></iframe></td> 
    </tr> 
</table> 

dans

<div id="test"> 
    <iframe id="xyz"></iframe> 
</div> 

Jusqu'à présent, je l'ai essayé d'utiliser:

$('#xyz').clone(true).appendTo('#test'); 

qui clone l'iframe, mais pas de contenu à l'intérieur.

Existe-t-il un moyen de faire fonctionner ce système?

Sinon, puis-je supprimer le code de la table autour de l'iFrame?

Si je ne peux pas faire cela, je pense que je vais devoir garder le code de la table.

+0

Quelque chose d'étrange se passe ici ... Je peux utiliser la suggestion d'artlung, mais le contenu d'iframe est alors vidé. Aussi, suggestion de CodeJousts remplace la table avec rien ... Semble que l'iframe se signale comme vide? – Josh

+0

J'ai mis le code im en utilisant sur pastebin ... http://pastebin.com/8CQ5GBd6 Son le code dans la fonction de clic à partir de la ligne 30. – Josh

Répondre

2

Impossible de le faire fonctionner correctement, donc au lieu débarrassé de l'interface utilisateur TinyMCE avec un peu de CSS.

Merci pour toutes les suggestions si!

0
$('table').replaceWith($('iframe:first')); 

Essayez cela ... Il remplace la table par l'iframe interne.

+1

On dirait que cela devrait fonctionner, mais la table est remplacée par rien ... – Josh

1

Que diriez-vous:

// http://api.jquery.com/replaceWith/ 
$('table:has(#xyz)').replaceWith($('#xyz')); 
// http://api.jquery.com/wrap/ 
$('#xyz').wrap('<div id="test" />'); 
+0

Un peu comme le code que j'ai essayé de faire ... son déplacement de l'iFrame ok, mais pas le contenu à l'intérieur - firebug montre juste les balises tête et corps vides. – Josh

+0

Il peut importer ce qu'il y a dedans, et quand il est chargé. Vous devrez peut-être recharger le contenu dans votre 'iframe'. – artlung

1

vous devez enregistrer le nœud html iframe quelque part (par exemple lui-même iframe), puis restaurer ce noeud après iframe mouvement:

iframe.htmlNode = iframe.contentDocument.getElementsByTagName('html')[0]; 
// moving iframe here ...... 

// restoring html node 
var html = iframe.contentDocument.documentElement; 
html.parentNode.removeChild(html); 
iframe.contentDocument.appendChild(iframe.htmlNode); 

Le code peut être optimisé beaucoup, mais l'idée principale reste le même.

Questions connexes