[RESOLU] Iframe automatique

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Iframe automatique

Re: Iframe automatique

par Fre3z69 » 25 nov. 2013, 23:32

ça fonctionne nikel, après faut tester plus en profondeur mais bon.

Je clôture pas de suite le sujet au cas où, mais en tout cas merci beaucoup

Cordialement

Re: Iframe automatique

par xTG » 25 nov. 2013, 20:43

Donc le code ne s'exécute pas pour cet algorithme.
Je viens de tester avec Firefox et IE et effectivement le code ne fonctionne pas (ne rentre pas dans les conditions).

Je suis donc reparti from scratch histoire de converger vers une solution qui fonctionne.
[javascript]var h = document.getElementById("iframeName");
console.log(h);
console.log(h.ownerDocument.body.clientHeight);
h.height = h.ownerDocument.body.clientHeight;[/javascript]
Ce script (que tu peux mettre à la place du contenu de la fonction précédente) permet de redimensionner la hauteur de ton iframe (pour peu que tu ne changes pas son id).
Testé et approuvé pour Firefox, aucune idée par contre pour les autres navigateurs.
Mais on peut déjà partir sur cette ébauche pour converger sur ce qu'il te faut avant de penser à interopérabilité.

Re: Iframe automatique

par Fre3z69 » 22 nov. 2013, 00:17

Voici ce que j'ai fait

[javascript] function adjustIFrameSize(iframeWindow) {
alert('ok0');
if (iframeWindow.document.height)
{
alert('ok1');
}
else if (document.all)
{
var iframeElement = document.all[iframeWindow.name];
if (iframeWindow.document.compatMode && iframeWindow.document.compatMode != 'BackCompat')
{
alert('ok2');
}
else
{
alert('ok3');
}
alert('ok4');
}
}[/javascript]

J’obtiens l'alerte 0.

Merci beaucoup

Cordialement

Re: Iframe automatique

par xTG » 21 nov. 2013, 18:59

Okay donc c'est bien !
L'appel fonctionne bien.

Donc maintenant la dernière étape (et pas la moindre) on va appeler la fonction de redimensionnement. :)
Et places un alert explicite dans chacun des cas possibles (if..else) ainsi qu'en début et fin de fonction pour tester le tout.
Ou bien tu peux utiliser console.log("ton texte") à la place du alert si tu ne veux pas déranger les visiteurs vu que tu es sur ton serveur de production.
Le console.log va au lieu d'ouvrir une popup de texte écrire dans la console de ton navigateur (firefox ou chrome) que tu peux trouver respectivement dans les outils de développement.

Avec ces affichages tu pourras tester l'exécution du code, voir si tu passes dans un if, son else ou bien nulle part.
Et si tu passes bien quelque part si le code de redimensionnement affecte bien ton iframe.

Re: Iframe automatique

par Fre3z69 » 21 nov. 2013, 16:32

Non, l'index et celui de la boutique normale : voir ici

Boutique.php est celui qui contient l'iframe : voir ici

Je fait ce que tu m'a dit plus haut? à savoir remettre la fonction et l'alerte dans le onload?

Merci beaucoup

Cordialement

Re: Iframe automatique

par xTG » 21 nov. 2013, 08:38

C'est ton index qui contient la balise <iframe> et qui inclue donc dedans boutique.php ? (histoire que je sois sûr)
Si c'est le cas c'est l'inverse qu'il faut faire pour le code.
parent.test_alert() doit aller dans boutique.php sur son onload.
Et la fonction dans ton index.

Si je me fourvoie on peut donc continuer en remplaçant notre fonction de test par la fonction de redimensionnement.
Dans un premier temps en supprimant le if du onload qui était prévu et placer un alert() dans la fonction appelée.

Re: Iframe automatique

par Fre3z69 » 21 nov. 2013, 03:25

Ca fonctionne comme ça

dans le body de ma page index de la boutique j'ai mit le " parent.test_alert(); "
et dans la page de l'iframe (soit boutique.php) j'ai mit la fonction.

Lors du chargement de la boutique j'obtiens bien un alerte.

Ensuite?

Re: Iframe automatique

par xTG » 20 nov. 2013, 21:27

Sur ta page appelant l'iframe :
<script type="text/javascript">
function test_alert()
{
  alert('ok');
}
</script>
Et dans le onload de ton iframe :
[javascript]parent.test_alert();[/javascript]

Re: Iframe automatique

par Fre3z69 » 20 nov. 2013, 20:41

Eu vu mon niveau en JS peux tu me montrer comment ça fonctionne stp?

Merci

Re: Iframe automatique

par xTG » 20 nov. 2013, 20:39

Ma réponse est oui au regard de ces derniers éléments.

Le mieux dans un premier temps serait de remplacer le onload par l'appel d'une fonction sur la page insérant l'iframe qui ferrait un alert.
Le cas le plus simple donc, ensuite on se penchera sur le code de redimensionnement. ;)

Re: Iframe automatique

par Fre3z69 » 20 nov. 2013, 18:16

A bien y réfléchir, la boutique est sur le même domaine, et la même machine.

Lien du site
Lien de la boutique

Donc en suivant ton raisonnement, qui j'avoue est plus clair maintenant, on devrais pouvoir exécuter le JS pour redimensionner l'iframe?

Merci en tout cas

Cordialement

Re: Iframe automatique

par xTG » 20 nov. 2013, 14:07

Si justement.
Car le navigateur a des protections en place pour ne pas exécuter du code JS d'une fenêtre autre domaine.

Imagines un peu le bordel sinon...
Tu as un onglet facebook d'ouvert et tu vas dans un autre onglet sur un site Y qui exécute du script sur ton onglet facebook pour poster des messages sur ton mur... :|

Re: Iframe automatique

par Fre3z69 » 20 nov. 2013, 09:47

sisi, celui qui est en prod est exactement le même serveur d'hébergement, en fait il est un sous-dossier du site principal.

Biensur, ce n'est pas le même nom de domaine, mais à quoi bon faire une iframe pour le même domaine ?

Brèf, j'espère que ça ne pose pas de problème.

Merci

Re: Iframe automatique

par xTG » 20 nov. 2013, 09:10

Donc pour faire plus simple, le site local est le site hébergeant la frame et le distant celui ayant le contenu de la frame, peux importe que ça soit avec wamp ou pas ;-)
Bah ça change tout alors...
Ils ne sont pas sur le même domaine donc => impossible de faire ce que tu veux en raison de la sécurité des navigateurs...
Il me semblait pourtant en avoir touché un mot plus haut...

Re: Iframe automatique

par Fre3z69 » 19 nov. 2013, 20:17

Pareil, le fonctionnement sur le site local (wamp) ou de prod est le même

Donc pour faire plus simple, le site local est le site hébergeant la frame et le distant celui ayant le contenu de la frame, peux importe que ça soit avec wamp ou pas ;-)

Donc ça fait bien la même chose

Je te laisse voir ici.

Merci