Über Javascript iframe groeße aendern - per flash ansteuern
cervin
- javascript
Hallo :)
Ich hab ein kleines Problem, ich versuche über mein flash menue
die größe meines iframes einzustellen.
Prinzipiell sollte das über JS kein problem darstellen, allerdings finde ich meinen fehler nicht...
Momentan gibt er mir die neue größe einfach als zahl aus, sprich :
"Die Seite mit der Adresse http://www. meldet2" "200"
JS in der datei:
<script language="javascript">
function changeframe()
{
var new_height = prompt ('200');
document.getElementById('main').height = new_height;
}
</script>
HTML:
<iframe src="home.html" width="617px" height="1800px" name="main" frameborder="0"></iframe>
AS Flash:
on (release) {getURL("javascript:changeframe()","_parent");
}
Adressierung gestaltet sich schwierig. In der hauptseite ist die swf. Da drin ist der besagte iframe. Hab schon alles ausprobiert, am "_parent" liegt es nicht, aber woran dann ? ^^
AS Flash:
on (release) {getURL("javascript:changeframe()","_parent");
Und das soll funktionieren?
Ich hab zwar nicht viel Ahnung[1] von Flash - aber für sowas verwendet man doch idR. das ExternalInterface-Objekt
ExternalInterface.call("changeframe");
[1] praktisch keine Ahnung :D
Also die flash Ansteuerung funktioniert generell schon, kann natürlich sein das da irgend ein fehler drin ist den ich übersehe...
das mit den px hatte ich am anfang auch vermutet, ist dem script aber zimelich egal, funktioniert auch ohne nicht ;)
das style hinzufügen: sicher? ich habs aber ausprobiert, klappt leider nicht :(
Die id sollte durch "name" doch auch abgedeckt sein, oder nicht? Aber ich habs trotzdem auch mit id versucht, klappt leider immer noch nciht :(
Also die flash Ansteuerung funktioniert generell schon, kann natürlich sein das da irgend ein fehler drin ist den ich übersehe...
das mit den px hatte ich am anfang auch vermutet, ist dem script aber zimelich egal, funktioniert auch ohne nicht ;)
das style hinzufügen: sicher? ich habs aber ausprobiert, klappt leider nicht :(
Die id sollte durch "name" doch auch abgedeckt sein, oder nicht? Aber ich habs trotzdem auch mit id versucht, klappt leider immer noch nciht :(
Grüße, Stefan
Hallo!
Also das mit dem "px" muss auf jeden Fall dazu, sonst ist die Angabe nicht definiert, es könnten ja sonst auch 200%,200em,etc sein um valide zu bleiben auf jeden Fall das px hintendran. height ist eine style-Eigenschaft, somit muss ein style folgen ( http://de.selfhtml.org/javascript/objekte/style.htm@title=style ) und es heisst ja nicht umsonst http://de.selfhtml.org/javascript/objekte/document.htm#get_element_by_id@title=getElementById(). Dann muss der Fehler ausserhalb des Javascripts liegen.
Grüße.
Ohmann, heute ist nicht mein Tag... nochmal etwas das mir aufgefallen ist:
<iframe src="home.html" width="617px" height="1800px" name="main" frameborder="0"></iframe>
Dort ist die Breite und die Höhe falsch angegeben. Entweder du schreibst width="617" height="1800" oder style="width:617px; height:1800px;" px im Attribut width und height gibt es nicht. Probiere mal das Script mit den Änderungen die vorhin schon geschrieben hatte und den iframe dann so:
<iframe src="home.html" style="width:617px; height:1800px;" name="main" id="main" frameborder="0"></iframe>
Funktioniert es so??
Grüße.
Ohmann, heute ist nicht mein Tag... nochmal etwas das mir aufgefallen ist:
<iframe src="home.html" width="617px" height="1800px" name="main" frameborder="0"></iframe>
Dort ist die Breite und die Höhe falsch angegeben. Entweder du schreibst width="617" height="1800" oder style="width:617px; height:1800px;" px im Attribut width und height gibt es nicht. Probiere mal das Script mit den Änderungen die vorhin schon geschrieben hatte und den iframe dann so:
<iframe src="home.html" style="width:617px; height:1800px;" name="main" id="main" frameborder="0"></iframe>
Funktioniert es so??
Grüße.
In der tat tu sich jetzt was :) Ich krieg den i frame jetzt schonmal klein, allerdings noch mit 2 problemen.
function changeframe2()
{
var new_height = prompt ('900px');
document.getElementById('main').style.height = new_height;
}
man merkt das ich nicht all zu fit mit js bin ;) selbst wenn ich new_height umbennene klappt bisher nur das kleinmachen.
Na immerhin... nur nochmal 2 Fragen:
- Einmal kommt noch diese meldung wo ich etwas eingeben kann
Wie meinst du das? Willst du nicht, das eine Abfrage kommt, wo man den Wert eingeben kann?
- Funktioniert der 2. script mit dem großmachen nicht.
Probiere mal den Wert so anzugeben wie bei der "Kleinermachen-Funktion" also new_height+"px"
Was willst du denn allgemein genau machen? das Ganze könnte man auch ganz einfach in eine Funktion packen. Schreibe doch einfach mal etwas genauer was du machen willst, bzw. poste etwas mehr Code, falls es den gibt.
Grüße.
Da das ganze über verschiedene programme und "sprachen" laeuft ist das schwieriger. ich bin anfürsich flasher und wage mich das erste mal in die JS welt ;) (faellt bestimmt gar nicht auf)
Ziel ist es eine Seite zu haben mit flash navigation. allerdings soll sich die flash seite nicht jedesmal neu laden, daher befindet sich der inhalt in einem frame. Ein echter frame ist nicht "möglich" da die navi ja mit wegscrollen soll.
Problem an einem iframe ist jedoch, das er immer gleich groß ist. Ich könnte eine js abfrage basteln die natürlich fragt wie groß das dokument ist, was in den iframe geladen werden soll, und dann eben den iframe automatisch anpasst. allerdings war mir die vorstellung für den anfang etwas kompliziert, also setz ich einfach in jeden button eine genaue anweisung wie groß der iframe für diesen menüpunkt sein muss.
Sprich:
Beim klick auf den button in flash passiert:
Der code soll also nur beim aufrufen des JS commands "changeframe" den iframe auf 200px höhe veraendern. wenn ich "changeframe2" aufrufe soll der den auf 400px machen. usw. ohne ne abfrage an den nutzer oder sonst was.
Alternative möglichkeiten zum iframe sind gerne wilkommen, allerdings wollte ich eine div überlagerung vermeiden, die zudem auch recht schwer über flash anzusteuern sind.
Ok, da ich wie gesagt von Flash keine Ahnung habe gehe trotzdem mal davon auf, das diese Zeile den Buttonclick zeigt, also wenn du im Flashmenu auf einen Menupunkt klickst wird diese Zeile ausgeführt:
on (release) {getURL("javascript:changeframe()","_parent");
oder sowas in der Art, also du kannst in Flash eine Javascriptfunktion aufrufen?
Wenn ja ist es ja einfach und zwar könnte man es so machen:
JAVASCRIPT:
function changeframe(breite) {
document.getElementById('main').style.height=breite+"px";
}
der IFRAME sieht dann so aus:
<iframe src="home.html" style="width:617px; height:1800px;" name="main" id="main" frameborder="0"></iframe>
(wenn du das "name" Attribut nicht benötigst kann es natürlich auch weggelassen werden, für diese Funktion hier wird es auf jeden Fall nicht benötigt)
und falls die Annahme von mir vom Anfang stimmt kannst du nun einfach die gewünschte Breite als Variable übergeben:
z.B.:
on (release) {getURL("javascript:changeframe(200)","_parent"); // 200 Pixel Breite
on (release) {getURL("javascript:changeframe(400)","_parent"); // 400 Pixel Breite
etc.
Ich hoffe ich habe das richtig verstanden soweit und es löst evtl. sogar dein Problem.
Grüße.
Hallo!
Also von Flash hab ich keine Ahnung aber dein Javascript hat einen kleinen Fehler:
es muss
<script language="javascript">
function changeframe()
{
var new_height = prompt ('200');
document.getElementById('main').style.height = new_height;
}
</script>
heissen. du hast bei document.getElementById('main') das style vergessen.
Hoffe es hilft,
Grüße
NACHTRAG: und bei der Angabe bei
document.getElementById('main').style.height=new_height;
fehlt noch das px hintendran, also muss die Zeile letztendlich so lauten:
document.getElementById('main').style.height=new_height+'px';
Grüße
Sorry für den 2. Nachtrag aber mir ist noch etwas aufgefallen. Du versuchst den iframe über seine id anzusprechen, allerdings besitzt der iframe gar keine id, das kann so nicht funktionieren. Du musst dem iframe also noch eine id verpassen:
<iframe src="home.html" width="617px" height="1800px" name="main" frameborder="0"></iframe>