zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Javascript & Ajax
Seite neu laden onclick im parent frame

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 05.05.2014, 16:38
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 26.04.2010
Beiträge: 75
moontan befindet sich auf einem aufstrebenden Ast
Standard onclick im parent frame

Hallo Zusammen,

ich schreibe aus einem iFrame eine Function und ein Element mit onclick Event in die parent Seite. Das onclick zeigt auf die Funktion die ich in die Seite einfüge.
Wenn ich da aber versuche das onclick auszufüheren ist die Funktion undefined.
Wenn ich mit Firebug schaue ist diese allerdings da.

Der Code der Iframe Seite sieht etwas so aus:
<div id="mytest">
<script>
function testfunc(){
alert('Hallo')
}
</script>
<div onclick="testfunc()" style="width:100px;height:100px;background-color:red">hallo Welt</div>
</div>

<script type="text/javascript">
var myparendiv = window.frameElement.parentNode;
myvar=document.getElementById("mytest");
myobject=parent.document.getElementById(myparendiv .id)
myobject.insertBefore(myvar,myparendiv.firstChild) ;
</script>


parent.onclick gibt zwar keinen Fehler in der Console - gibt den alert aber auch nicht aus.
Das scheint irgendwie am Event zu hängen?
Wäre klasse wenn mir jemand erklärt warum das nicht klappt.

LG
Uli
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 07.05.2014, 15:18
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von moontan Beitrag anzeigen
Wäre klasse wenn mir jemand erklärt warum das nicht klappt.
Wenn wir wüßten, was du machst könnten wir das. Aber ich verstehe nicht was dein Beispielcode uns zeigen soll und wo genau das Problem ist, dass du beschriebst.

Da du von einem iframe sprichst, wäre aber die Frage, ob du die SOP beachtest?
https://de.wikipedia.org/wiki/Same-Origin-Policy
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 09.05.2014, 15:13
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 26.04.2010
Beiträge: 75
moontan befindet sich auf einem aufstrebenden Ast
Standard onclick im parent frame

Hallo Protonenbeschleuniger,

ja die sop ist beachtet.

Ein normaler Funktionsaufruf würde auch funktionieren und den alert ausgeben.

Was ich mache ist aus einer Iframe Seite einen Div und eine Funktion auf die Hauptseite zu schreiben und die Funktion über das onclick im Element aufzurufen.
Wenn man den Code den ich gepostet habe in einem Iframe aufruft sieht man was passiert. Im original ist ein korrekter Doctype vorhanden ...


Ein Aufruf der Funktion würde wie gesagt funktionieren:
testfunc(); - gibt den alert aus.

Nur als onclick Event nicht.


Ich habe mittlerweile auch einen Workaround - wenn ich den Div mit getElement einfange und den Event auf dieses object lege funktioniert es.

Wäre natürlich schon diesen Umweg wegzulassen - letztlich würde ich auch gerne verstehen warum das onclick im Div nicht funktioniert - und das Browser übergreifend.

LG
Uli
Mit Zitat antworten
  #4 (permalink)  
Alt 09.05.2014, 15:40
?!?
XHTMLforum-Kenner
 
Registriert seit: 20.03.2013
Beiträge: 1.638
explanator sorgt für eine eindrucksvolle Atmosphäreexplanator sorgt für eine eindrucksvolle Atmosphäre
Standard

Lies mal hier --> JavaScript: Fenster- und Frameszugriff
__________________
"Wieso ist der Code schrott, ich dachte hier seien Profis..."
Aus einem Forum.
Mit Zitat antworten
  #5 (permalink)  
Alt 09.05.2014, 15:49
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von moontan Beitrag anzeigen
Was ich mache ist aus einer Iframe Seite einen Div und eine Funktion auf die Hauptseite zu schreiben und die Funktion über das onclick im Element aufzurufen.
Wenn man den Code den ich gepostet habe in einem Iframe aufruft sieht man was passiert. Im original ist ein korrekter Doctype vorhanden ...
Was passiert dann? Es wird die Funktion aufgerufen. Ich weiß aber nicht was du wirklich willst.


Zitat:
Zitat von moontan Beitrag anzeigen
Ein Aufruf der Funktion würde wie gesagt funktionieren:
testfunc(); - gibt den alert aus.

Nur als onclick Event nicht.
Doch.

Zitat:
Zitat von moontan Beitrag anzeigen
Ich habe mittlerweile auch einen Workaround - wenn ich den Div mit getElement einfange und den Event auf dieses object lege funktioniert es.
Ich verstehe wirklich nicht, wo dein Problem ist. Du kannst jedem Element einen Eventhandler hinzufügen, entweder im DOM oder mit JS und - wenn du die SOP beachtest - kannst mit diesem Handler jede Funktion auf der Seite aufrufen. Wenn du dich in einem (i)Frameset bewegst musst du natürlich schauen in welchem window scope die Funktion ist. Aber es geht aus deinem Code nicht hervor, wo du da einen anderen hast.

Zitat:
Zitat von moontan Beitrag anzeigen
Wäre natürlich schon diesen Umweg wegzulassen - letztlich würde ich auch gerne verstehen warum das onclick im Div nicht funktioniert -
Es funktioniert in deinem Code. Du machst etwas anderes, als du uns hier zeigst bzw. ist der Code nicht vollständig, daher können wir dir nicht sagen, was, wo falsch sein könnte.
Mit Zitat antworten
  #6 (permalink)  
Alt 09.05.2014, 18:02
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 26.04.2010
Beiträge: 75
moontan befindet sich auf einem aufstrebenden Ast
Standard

Hallo Protonenbeschleuniger,

da war ich wohl etwas vorschnell mit dem korrekten Doctype ...
Unter dem hatte ich ein <html xmlns="http://www.w3.org/1999/xhtml">

Damit funktioniert es nicht - ohne klappt es dann.
Ohne dein >>Doch! hätte ich da nicht weiter gesucht.

LG + schönes Wochenende
uli
Mit Zitat antworten
  #7 (permalink)  
Alt 09.05.2014, 19:09
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Der Doctype spielt in diesem Fall keine Rolle, was immer du machst, es ist etwas anders als du uns zeigst.
Mit Zitat antworten
  #8 (permalink)  
Alt 11.05.2014, 13:27
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 09.10.2010
Beiträge: 154
MitjaStachowiak befindet sich auf einem aufstrebenden Ast
Standard

Also ich habe das so verstanden: Du rufst im Iframe einen code auf, der in etwa so lautet:
Code:
parent.document.getElementById('EinLeeresElement').innerHTML = '<DIV onclick="testfunc()">hallo</DIV><SCRIPT type="text/javascript">function testfunc () { alert("hy"); }</SCRIPT>';
Das kann nicht funktionieren, da SCRIPT-ELemente, die du nachträglich ins Dokument einfügst nicht interpretiert werden. Das geht nur irgendwie, wenn du im HEAD ein neues SCRIPT anlegst...

Die bessere Möglichkeit: Hänge im parent-Frame nur das DIV ein und setze einen Event-Listener auf eine Funktion in der IFrame-Seite. Falls du dann Probleme mit dem Zugriff auf irgend welche Variablen der Parent-Seite bekommst, oder beim verlassen der IFrame-Seite die Funktion nicht mehr aufrufbar ist, melde dich noch mal.

Wenn du unbedingt eine Funktion in der parent-Seite erzeugen möchtest, würde ich etwas, wie parent.neueFunktion = function () { alert('hy'); } versuchen. Kann sein, dass dann auch das herkömmliche onclick funktioniert.
Mit Zitat antworten
  #9 (permalink)  
Alt 11.05.2014, 13:49
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von MitjaStachowiak Beitrag anzeigen
Also ich habe das so verstanden: Du rufst im Iframe einen code auf, der in etwa so lautet:
Hmm, tut er das? So wie ich ihn verstanden habe ist das der Code des iframe und der funktioniert so.

Zitat:
Zitat von MitjaStachowiak Beitrag anzeigen
Das kann nicht funktionieren, da SCRIPT-ELemente, die du nachträglich ins Dokument einfügst nicht interpretiert werden. Das geht nur irgendwie, wenn du im HEAD ein neues SCRIPT anlegst...
Ein script Tage muss nicht im head Element eingefügt.


Zitat:
Zitat von MitjaStachowiak Beitrag anzeigen
Wenn du unbedingt eine Funktion in der parent-Seite erzeugen möchtest, würde ich etwas, wie parent.neueFunktion = function () { alert('hy'); } versuchen. Kann sein, dass dann auch das herkömmliche onclick funktioniert.
Natürlich funktioniert das.

Aber wie gesagt, das entspricht nicht dem was er gezeigt hat. da der Code ja funktioniert und es auch nicht ersichtlich ist, wo das Problem mit dem iframe sein soll.
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 11.05.2014, 13:52
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Stimmt du hast doch recht:
Zitat:
Zitat von moontan Beitrag anzeigen
ich schreibe aus einem iFrame eine Function und ein Element mit onclick Event in die parent Seite. Das onclick zeigt auf die Funktion die ich in die Seite einfüge.
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Fremden Frame mit CSS überschreiben Hackerdeluxe CSS 0 07.09.2010 20:54
Befehl für Link mit onClick Synoxis Javascript & Ajax 9 25.05.2010 15:50
Vom Frame aus einen Refresh steuern THePointer Javascript & Ajax 1 21.07.2009 23:07
Scrollbalken im div container statt im frame Cassiopaia CSS 1 27.06.2008 19:29
csss seite in frame horiz. scrollbar Holger (HMR) CSS 0 15.09.2005 16:05


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:43 Uhr.