Moja strona jest taka konfiguracja:

<frameset rows="80,*">
    <frame name="top" id="top" src="header.html">
    <frameset id="innerframe" cols="300,*">
        <frame name="nav" src="nav.html">
    </frameset>
</frameset>


.. W header.html Mam:

function fAlert() {
    alert('test');
}

Jak mogę zadzwonić fAlert() w nav.html?

próbowałem

var fframe = parent.document.getElementById('top');
fframe.fAlert();

I również

parent.frames.top.fAlert();

Ale nie działa ({x0}}).

. Jakieś pomysły, jak mogę to osiągnąć?

5
seph 20 listopad 2013, 18:26

2 odpowiedzi

Najlepsza odpowiedź

Po pierwsze, nie używaj ramek i ramek. Użyj iFrame - ramki są przestarzały.

Po drugie, podaj identyfikator dla iframe (lub ramki, jeśli musisz), aby skierować poprawnie połączenia funkcji. (Już wiele to zrobiłeś, ale jestem metodycznym.) Nie nazwałbym tego "top", ponieważ "szczyt" ma już znaczenie pod względem okien i ramek.

Od wewnątrz ramki Nav, rodzic.Insertyourframeidheid.falert () powinien działać poprawnie. Zakłada to dwie rzeczy: 1) strona i zawartość ramy pochodzą z tej samej domeny i 2) header.html załadowany prawidłowo i nie było w nim błędów skryptów. Błędy skryptów lub inne problemy mogą utrzymać funkcję w historii.

6
user1329482 20 listopad 2013, 15:10

W przypadku HTML w kwestiach powinno działać.

window.parent.parent.frames[0].fAlert();
6
user3005791 20 listopad 2013, 15:15