2010-10-03 8 views
3

J'ai un iframe sur mon index.html et ce iframe est dynamique.Pourquoi ce code js ne fonctionnera-t-il pas dans Chrome et Safari?

sur mon index.html J'ai un formulaire qui, une fois soumis, affiche les résultats à l'intérieur de l'iframe.

Le problème est que la hauteur Iframes doit également être dynamique pour que le site Web soit "propre".

Ainsi, dans la page php Iframe, j'ai ce code:

<body onload="parent.resize_iframe(document.body.scrollHeight)"> 

Et dans le index.html (qui est le parent dans ce cas) J'ai cette fonction:

function resize_iframe(new_height){ 
    byId('iframe001').style.height=parseInt(new_height) + 20 + 'px'; 
} 

Le problème ici n'est pas la fonction, mais que Safari et Chrome pensent que le scrollHeight est quelque chose de plus gros que ce qu'il est.

J'ai essayé d'alerter le scrollHeight, et le n ° est toujours autour de 2000px dans Chrome et Safari, mais dans d'autres navigateurs, il est dynamique, il devrait être (500, 300, 800, etc) ...

Tous des idées?

MISE À JOUR:

j'ai remarqué quand je clique sur un lien sur l'index, puis cliquez sur le bouton Retour du navigateur, l'iframe ne redimensionne correctement et SAFARI CHROME.

Mais je dois cliquer à nouveau dans le navigateur pour que cela fonctionne ...

VOIR CETTE QUESTION POUR PLUS D'INFORMATIONS: Can't figure out why Chrome/Safari can't get the ScrollHeight right here

+2

Les attributs JavaScript intégrés sont soooo 1999. – Skilldrick

+0

Essayez d'écrire: byId ('iframe001'). Style.height = (parseInt (new_height) + 20) + 'px'; –

+1

@Skilldrick: Pour ce que ça vaut, '' est la seule manière standardisée d'appeler une fonction quand la page se charge. –

Répondre

0

Je ne sais pas, mais cependant je veux dire ce que je veux dire. Safari et Chrome sont tous les deux basés sur les navigateurs basés sur Webkit, donc c'est normal à un comportement comme ça. Donc je suppose qu'ils calculent la hauteur en ajoutant le rembourrage et la marge à la hauteur normale. s'il vous plaît google it "webkit calculé style"

0

Parfois javascript ne fonctionne pas comme prévu lorsque la page a des erreurs de validation.

Essayez d'abord de valider votre balisage (HTML).

Si la validation ne fonctionne pas, essayez d'utiliser jQuery.

jQuery est compatible avec tous les navigateurs; vous devriez obtenir exactement le même résultat sur tous les navigateurs.

Questions connexes