2010-04-14 3 views
2

J'ai besoin d'autoheight un iframe avec un src de domaine croisé, j'ai essayé avec javascript, mais j'obtiens un "accès refusé" quand j'essaye d'obtenir la taille de iframe contentWindow. quelqu'un connaît une méthode?Iframe avec autoheight

+0

Vous ne pouvez pas obtenir le contenu de l'iframe probablement parce que l'iframe cible se trouve sur un domaine/port/protocole différent. Qu'est-ce que tu colle dans l'iframe? parce qu'il pourrait y avoir une approche pour votre situation. – Warty

+1

Je colle une page de sous-domaine dans l'iframe, et je trouve un moyen de la faire fonctionner, je ne fais que définir le même domaine dans les deux pages, et ainsi obtenir le iframe contentWindow sans le message "Accès refusé". c'est le script document.domain = "votredomaine.com;" Avec ceci, vous pouvez utiliser le sous-domaine croisé javascript scripting. Merci! P.D. Désolé pour mon anglais! : S – eos87

Répondre

3

ItzWarty a raison: la page parente ne peut pas communiquer avec le document enfant, même pour connaître sa hauteur. En 2008, Michael Mahemoff a posté une vue d'ensemble détaillée de Cross-Domain Communication with IFrames qui peut vous fournir quelques conseils. L'espoir est sur le chemin, cependant - HTML5 inclut une amélioration à cette situation appelée "Cross-document messaging" qui est prise en charge dans Firefox 3, Safari 4, Chrome 2, Opera 9.2 et même IE ... 8. Si vos utilisateurs sont en utilisant seulement les navigateurs supportés, vous pouvez l'utiliser. Peut-être que vous pourriez définir l'attribut "scrolling" sur l'élément IFRAME sur "auto" par défaut et tester pour window.postMessage - s'il réussit, mettez "scrolling" à "no" et utilisez une fonction pour dimensionner l'IFRAME en conséquence.

J'ai récemment traité un problème similaire (page parent de domain.tld encadrant une page sur blog.domain.tld) ​​mais j'ai été capable d'utiliser "le vieux document.domain hack" décrit par Mahemoff, bien qu'il ne soit pas supporté dans Opera.

Bonne chance.

1

Si vous avez créé un proxy sur votre serveur qui a récupéré le contenu, JavaScript n'aurait pas cette restriction.

1

Le problème de domaine est seulement un problème que vous rencontrez - IE8 est l'autre. Même si vous pouvez accéder à l'iframe, IE8 ne peut pas récupérer correctement les informations body.clientHeight. Firefox fonctionne bien ...