2012-04-04 4 views
0

Ich bin grün zu Javascript, aber ich habe einige C++ in meinem Hintergrund, so verstehe ich die Prinzipien der Codierung, nur nicht viel Web-Zeug . Ich habe einen E-Mail-Link, der abhängig davon, ob ein Iframe existiert, zwei Dinge tun muss. Dieser Code existiert auf der Elternseite (index.html), so dass der Iframe ein Kind wäre (ich nehme an). Wenn es noch keinen iframe gibt, brauche ich diesen Code (gb_page_fs [] ruft einen Code auf, um den iframe zu erstellen).Open Link entweder in bestehenden iframe oder Laufcode, je nachdem ob iframe existiert

<a href="contact.html" rel="gb_page_fs[]">e-mail</a> 

Wenn die iframe es „GB_frame“ würde existiert genannt und das ist der Code, den ich für den Link brauchen würde:

<a href="contact.html" target="GB_frame">e-mail</a> 

Ich habe zwei Probleme: Der Versuch, zu erkennen, ob der Rahmen vorhanden ist, und Ausführen des zweiten Fallcodes. Ich habe viel Code gesehen, um Eltern-iFrame-Namen zu identifizieren, aber nicht Kind. Der nächste, den ich damit bekommen habe, ist document.getElementById ("framenname"). Name, aber ich bekomme "Kann Eigenschaft 'name' von null nicht lesen". Was letzteres angeht, vermute ich, dass es eine einfache Lösung gibt, aber ich weiß nicht, wo ich anfangen soll.

Antwort

0

Sie sind auf dem richtigen Weg, um den Iframe zu testen. Sie wollen, so etwas tun:

var x = document.getElementById('framename'); 
// if the iframe doesn't exist x will be null and the if statement evaluates to false 
if(x) 
{ 
    doSomething(); 
} 

Um die Quelle des iframe eingestellt:

document.getElementById('framename').src = 'url to page'; 
+0

Geoff, danke! Das bringt mich einen Schritt näher. Allerdings bekomme ich das gleiche Ergebnis, egal ob der Rahmen geöffnet ist oder nicht. Ist es wichtig, dass der Iframe dynamisch erstellt und geladen wird? Ich führe diese Funktion vorübergehend als eine Funktion aus, die durch eine Formularschaltfläche mit einer Alarmausgabe aufgerufen wird, um mir zu zeigen, ob sie der "if" Logik oder der "else" Logik folgt. Funktion checkframe() { var x = document.getElementById ('GB_frame'); if (x) {alert (x.Value + "if ");} else {alert (" else");}} – thirdstring

+0

Kein @thirdstring, spielt es keine Rolle, wenn der iframe hinzugefügt wird (wie solange es da ist, bevor du es suchst). Ich habe bemerkt, dass du x.value in deiner Warnung hast. Der Wert ist kein gültiges Attribut eines Iframes, daher erhalten Sie einen undefinierten Wert. Schau dir diesen Link an: http://jsfiddle.net/vEnjR/3/](http://jsfiddle.net/vEnjR/3/). Es ist ein funktionierendes Beispiel für das dynamische Hinzufügen eines iframe und das anschließende Überprüfen, ob es existiert. Lass es mich wissen, wenn du weitere Fragen hast. –