2009-06-30 11 views
0

J'ai une fenêtre iframe qui affiche un rapport. Pour accéder à cette iframe, j'ai un bouton expand/collapse sur la fenêtre parent.Comment simuler un clic d'ancrage dans iframe via Javascript

Dans la fenêtre du rapport de iframe, j'ai une ancre #PAGETOP au bas du rapport, i, e:

<tr><td style="padding-left:45px" class="bottom" colspan="99"><div id="ptAnchor"><a href="#PAGETOP"><img src="first.png" border="1" alt="Top of Page" /></a></div></td></tr> 

Comment puis-je imiter programatically onclick de cette ancre #PAGETOP, lorsque l'utilisateur appuie sur le bouton "expand" de la fenêtre parent?

Merci, Tony.

Répondre

1

L'utilisation de #PAGETOP ancre est de faire défiler la fenêtre vers le haut. Vous pouvez écrire une fonction pour faire défiler la fenêtre vers les coordonnées 0,0.

function ScrollToTop() { 
    window.scroll(0, 0); 
} 

Mettre cette fonction dans le IFrame, et appellent de la fenêtre parent.

+0

Salut Kirtan, malheureusement, cela ne semblait pas fonctionner. J'apprécierais quand même comment je ferais ce programme - merci. – tonyf

+0

Un tel correctif nécessite le même domaine dans le src de l'iframe. Voir http://en.wikipedia.org/wiki/Same_origin_policy –

0

Vous pouvez faire quelque chose comme ceci:

<iframe name="foo"></iframe> 
<button>Expand</button> 

<script type="text/javascript"> 
    $(function(){ 
    $('button').click(function(){ 
     window.frames['foo'].location.hash = "top"; 
    }); 
    }); 
</script> 
1

Dans le doc parent:

<a id="scrollToTop">Expand</a> 
<script type="text/javascript"> 

    document.getElementById("scrollToTop").onclick = function(e) { 
     var childWindow = document.getElementById("theIFrame").contentWindow; 

     // this should emulate a click on the ptAnchor DIV's child A HREF. 
     childWindow.document.getElementById("ptAnchor").firstChild.click(); 

     // alternatively, this will simply scroll the child window to the top-left corner 
     childWindow.scrollTo(0,0); 
    } 
</script> 
<iframe id="theIFrame" src="someDocOnTheSameDomain.html"></iframe> 

Votre iframe doit être sur le même domaine pour le navigateur pour permettre les scripts entre les cadres parents et enfants .

La propriété contentWindow vous permet d'accéder à l'objet fenêtre de l'iframe enfant. De là, vous pouvez écrire Javascript pour émuler un clic ou simplement faire défiler la fenêtre.

Questions connexes