javascript-funktion im iframe aufrufen
mikey
- javascript
0 Engin0 ritschmanhard0 mikey0 mikey
Hallo forum,
Ich habe in meiner Seite a.html ein iframe das Seite f.html enthält.
Seite f.html ist eine html-Datei mit 7 Bildern (navigation) und Seite a.html die eigentliche website mit dem Inhalt.
Den Bilder habe ich ein mouseover verpasst und dazu im head von f.html eine js-Funktion geschrieben die ich bei einem mouse-over-event der Bilder aufrufe. Lange Rede kurzer Sinn^^
Ich möchte nun beim Aufruf von seite a.html die js-funktion von f.html aufrufen, sodass das Navigations Bild der aktuellen seite a.html das mouse-over bekommt.
Ich hoffe man versteht was ich möchte und kann mir Helfen ich bezweifel aber da das möglich ist. Bitte Sagt mir was anderes ;-)
Hier noch etwas code (stark auf das wesentliche gekürtz.)
f.html
...
<head>
<script>function mover(){alter("hallo welt");}
...
a.html
...
<body>
<script>mover();
...
Ave mikey!
Bitte Sagt mir was anderes ;-)
Das lass ich mich nicht 2 mal sagen. :)
Schmeiss die frames raus! Es sei denn, du kannst 2 Gute Gründe nennen, sie doch drin zu lassen.
Grüße aus H im R an mikey,
Primus Enginus*
Nicht sowas anderes :), was anders im dem Sinn das es doch umzusetzen geht. Weil ich bekomme es einfach nicht hin :(
Habe auf meinem hoster keine php perl ssi somit fallen tempaltes heraus!
Mit dem iframe wollte ich das manko umgehen, dass man in einem framset keine bookmarks setzen kann, was durch das iframe jedoch so möglich ist.
ps: habe schon folgendes probiert.
iframeNameID.test();
top.frames[0].test();
top.frames.iframeNameID.test();
document.getElementsByName('iframeNameID').test();
document.getElementByID('iframeNameID').test();
Fehler ist immer *.test ist not a function.
Ave mikey!
Nicht sowas anderes :)
War klar. :)
Habe auf meinem hoster keine php perl ssi somit fallen tempaltes heraus!
Das sind schon 3 gute Gründe.
iframeNameID.test();
top.frames[0].test();
top.frames.iframeNameID.test();
document.getElementsByName('iframeNameID').test();
document.getElementByID('iframeNameID').test();Fehler ist immer *.test ist not a function.
Dann mach doch daraus eine function. Frag mich aber nicht wie das geht, Javascript kann ich nur verlinken. :)
Grüße aus H im R an mikey,
Primus Enginus*
Es ist eine Funktion!
Innerhalb des ifames klap es ja.
Schau mal bitte den Post
wie ich im web lesen kann haben es andere ja geschaft, nur ich finde den fehler nicht bildfisch X( mit brille :)
@@Engin:
Schmeiss die frames raus! Es sei denn, du kannst 2 Gute Gründe nennen, sie doch drin zu lassen.
Wobei es sorum, wie es mikey realisiert hat, nämlich die Navigation im Iframe (und nicht etwa den Hauptinhalt im Iframe), gar nicht so schlimm ist. (siehe [icke 20060830], [icke 20070301])
Der Nachteil der fest anzugebenden Größe kommt bei einer Navigation, die mit Grafiken realisiert ist (an Alternativtexte wude gedacht?), auch nicht ganz so zum Tragen. Flexibles Layout ist freilich was anderes.
Um ein solches zu erstellen, bieten sich severseitige Includes wahrhaft an.
Live long and prosper,
Gunnar
Ave Gunnar!
Wobei es sorum, wie es mikey realisiert hat, nämlich die Navigation im Iframe (und nicht etwa den Hauptinhalt im Iframe), gar nicht so schlimm ist. (siehe [icke 20060830], [icke 20070301])
Da entfällt mir jetzt aber der Sinn dieser Sache, oder ich versteh es nicht.
Normalerweise werden doch frames genutzt um sich arbeit zu sparen, sprich die Navigation einmal zu haben, in diesem falle müsste man ja für jede Seite noch eine unterseite machen, die den Inhalt mitschleppt, das ist doch doppelte arbeit.
Grüße aus H im R an Gunnar,
Primus Enginus*
Hi Engin!
Da entfällt mir jetzt aber der Sinn dieser Sache, oder ich versteh es nicht.
Normalerweise werden doch frames genutzt um sich arbeit zu sparen, sprich die Navigation einmal zu haben, in diesem falle müsste man ja für jede Seite noch eine unterseite machen, die den Inhalt mitschleppt, das ist doch doppelte arbeit.
Ne, ist doch echt gar nicxht so schlecht: man definiert sich seine Navigation einmalig in einer eigenen Seite. Diese navigation steuert mittels (parent/top) .location.href="xxx" die neu zu ladende Seite. Jede Seite, die zum Homepage-Konglomerat gehört, bindet nun nur noch einfach diese Navigationspage via IFrame an konstanter Position ein.
Ero: Arbeit gespart...
Grüsse,
Richard
Ave ritschmanhard!
Diese navigation steuert mittels (parent/top) .location.href="xxx" die neu zu ladende Seite. Jede Seite, die zum Homepage-Konglomerat gehört, bindet nun nur noch einfach diese Navigationspage via IFrame an konstanter Position ein.
Dieses .location.href="xxx"
ist dann wohl Javascript nehm ich mal an.
Naja, jeder muss selbst hinter seinen taten stehen. :-)
Grüße aus H im R an ritschmanhard,
Primus Enginus*
<a target="_parent"> im iframe/html so gehts ohne js
Ave mikey!
<a target="_parent"> im iframe/html so gehts ohne js
Ja, gut zu wissen. :) Also, was mir grade so aufgefallen ist war, das du hier dem Chris etwas mitteilst, was du aber allen anschein nach deinem eigenen Script vorenthältst.
Ansonsten kann ich dir leider nicht weiter helfen, ich hab echt keine Ahnung von Javascripten.
Grüße aus H im R an mikey,
Primus Enginus*
Hi mikey!
Kein Wunder, dass dein Browser da nicht mitspielt:
<script>function mover(){alter("hallo welt");}
Alter, so wird das nix...
Grüsse,
Richard
Mal der kompeltte code, da der fehler wohl im dedail steckt
f.html
<html>
<head>
<script>
function zoom(navitem){
var step=3,stop=32,osize=48;
var e=document.getElementsByName("navitem");
var diff,size;
for(var n=e.length-1;n!=-1;--n){
diff=n-navitem;
if(diff<0)
diff*=-1;
size=osize-(diff*step);
if(size<stop)
size=stop;
e[n].width=size;
e[n].height=size;
e[n].vspace=diff;
}
}
function test(){alert("test");}
</script>
</head>
<body>
...
</body>
</html>
a.html
<html>
<head>
</head>
<body>
<iframe src="./f.html" width="100%" height="48px" id="navid" name="navname">
<p>Ihr Browser kann leider keine eingebetteten Frames anzeigen:
Sie können die eingebettete Seite über den folgenden Verweis
aufrufen: <a href="../../../index.htm">SELFHTML</a></p>
</iframe>
<script>document.frames.navnamedidzoom(5);</script>
</body>
</html>
Hi,
<script>document.frames.navnamedidzoom(5);</script>
Was soll denn das sein?
MfG ChrisB
punkt vergessen...
<script>document.frames.navnamedid.zoom(5);</script>
name oder id habe es mit beiden versuchte!
Hi,
punkt vergessen...
<script>document.frames.navnamedid.zoom(5);</script>
Auch etwas, das navnamedid heissen wuerde, gibt es in deinem gezeigten Code nicht.
MfG ChrisB
@@ChrisB:
punkt vergessen...
<script>document.frames.navnamedid.zoom(5);</script>Auch etwas, das navnamedid heissen wuerde, gibt es in deinem gezeigten Code nicht.
Wie auch etwas, das 'type' heißen würde, nicht. <http://de.selfhtml.org/javascript/intro.htm#javascriptbereiche@title=JavaScript-Bereiche in HTML definieren>
Live long and prosper,
Gunnar
sollte das jetzt ironisch sein?
@@mikey:
sollte das jetzt ironisch sein?
Nein. Für 'style'-Elemente gilt übrigens entsprechendes.
Live long and prosper,
Gunnar
Hi mikey!
punkt vergessen...
<script>document.frames.navnamedid.zoom(5);</script>
Who did zoom? - sncr.
Aber jetzt mal ernsthaft:
Hast du schon probiert: document.frames.navname.zoom(5);
Wenn das nicht klappt, kann es eigentlich nur noch daran liegen, dass f.html nicht in den <iframe name="navname" src="f.html" /> geladen wird.
Grüsse,
Richard
Ihr habt recht! Hier der Code 1:1
Sry für das durch-ein-ander, aber ich dachte es wäre klar was ich meine.
nav.html (geladem im iframe)
<html>
<head>
<meta http-equiv=Content-Language content=de-DE />
<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1" />
<meta http-equiv=Content-Style-Type content="text/css; charset=ISO-8859-1" />
<meta http-equiv=Content-Script-Type content="text/javascript; charset=ISO-8859-1" />
<title></title>
<style>
body{background-color:#fff;text-align:center;margin:0;padding:0;}
a img{border:none;}
</style>
<script>
function zoom (navitem) {
var step=3,stop=32,osize=48;
var e=document.getElementsByName("navitem");
var diff,size;
for(var n=e.length-1;n!=-1;--n){
diff=n-navitem;
if(diff<0)
diff*=-1;
size=osize-(diff*step);
if(size<stop)
size=stop;
e[n].width=size;
e[n].height=size;
e[n].vspace=diff;
}
}
function test (){alert(":-)");}
</script>
</head>
<body>
<a target=_parent href="javascript:history.back();" onmouseover="zoom(0);"><img name="navitem" width="48px" height="48px" src="../img/icon/back.ico" alt="vorherige Seite" /></a><a
target=_parent href="../../../test1.html" onmouseover="zoom(1);"><img name="navitem" width="48px" height="48px" src="../img/icon/blank.ico" alt="top" /></a><a
target=_parent href="../../../test2.html" onmouseover="zoom(2);"><img name="navitem" width="48px" height="48px" src="../img/icon/blank.ico" alt="GNU/Linux" /></a>
</body>
</html>
die eigentliche seite
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Eingebettete Frames definieren</title>
</head>
<body>
<h1>TEST1</h1>
<iframe src="./html/nav/html/index.html" width="100%" height="48px" id="nav" name="nav">
<p>Ihr Browser kann leider keine eingebetteten Frames anzeigen.<a href="../../../index.htm">SELFHTML</a></p>
</iframe>
<script>document.frames.nav.test();</script>
</body>
</html>
Yerf!
<iframe src="./html/nav/html/index.html" width="100%" height="48px" id="nav" name="nav">
<p>Ihr Browser kann leider keine eingebetteten Frames anzeigen.<a href="../../../index.htm">SELFHTML</a></p>
</iframe>
<script>document.frames.nav.test();</script>
Ich tippe mal auf ein Timingproblem. Der Funktionsaufruf an der Stelle findet vermutlich statt, bevor das Dokument im IFrame fertig geladen wurde. Damit existiert die Funktion noch nicht.
Hm, evtl könnte man das so lösen, dass die Funktion im "onload" des Bodys der Navigation steht und diese dann auf eine im Parent definierte Javascriptvariable zugreift (zur Wertübergabe).
Gruß,
Harlequin
super vielen Dank Dir, so klappt es. :)