Javascripts in Frames

[Micha's Home]

  [Tips&Tricks]

[Links]


Q: Wie spreche ich eigentlich JS-Funktionen in unterschiedlichen Frames an?

A: Applets in der selben Seite erreicht man per JS mit

document.appletName

Andere Seiten erreicht man mit

parent.frameName

für Seiten in dem selben Fenster (aber unterschiedlichen Frame). Die Funktion also mit

parent.frameNAme.document.appletName

Wenn man jetzt einer Funktion eines anderen Frames einen Parameter übergeben will, dann verwendet man

parent.frameNAme.document.appletName.methodName(arg)

All diese cross window Operationen erfordern die selbe server/domain Kombination. Andernfalls bekommt man eine Security violation.

In Netscape kann man das verhindern d.h. explizit erlauben mit

netscape.security.PrivilegeManage.enablePrivilege('UniversalBrowserRead');

Q: Warum wird mein onload-Script nicht geladen?

A: onload-Scripte sollten in der Frame-Hasuptseite geladen werden; sonst funktioniert es oft nicht. Dies ist auch wichtig, wenn ein Script seinen Zustand über mehrere Seiten behalten soll.

Beispiel:

<script LANGUAGE="JavaScript">
<!-- Begin
function my_on_load() {
    // Seite in Frame 2 sofort nach dem Laden ersetzen
    onLoad="frames[1].location.href='http://www.irt.org/script/faq.htm'">
}
// End -->
</script>


<FRAMESET ROWS="50%,*" onLoad="my_on_load()'">
<FRAME NAME="Inhalt" target="Left" SRC="somePage.htm">
<FRAME NAME="Bla" target="_top" SRC="somePageToBeReplaced.htm">
</FRAMESET>

 

Letzte Änderung: 02.10.10