Elemente eines iFrame zugreifen
Ratlose
- javascript
Hallo Leute,
ich habe einen ziemlich frustrierenden Tag hinter mir. Ich verwende das MS CRM und habe dort auf einem Formular ein iFrame gepackt, der meine Seite index.html lädt. Auf der index.html gibt es zwei Button Start bzw. End und zwei Textboxen. Das funktioniert auch wunderbar, auch wenn ich den Button im CRM-Formular aufrufe bekomme ich meine gewünschte Ausgabe.
Mein großes Problem ist: ich habe auf dem CRM-Formular eine Textbox, in der eine Dauer in Minuten drin steht. Der Wert, den ich in index.html in einer Textbox errechne, soll hinzu addiert werden.
Ich habe nun den ganzen Tag probiert und hier auch etlichen Code aus diesem Forum rauskopiert und nichts funktioniert. Was funktioniert nicht? Ich habe contentWindow verwendet und zusätzlich dieses hier (nur ein kleiner Ausschnitt von acht Stunden Tests *an die Decke geh wegen meines Nicht-Wissens!!*)
var wert = document.iframe['IFRAME_localhost'].getElementById('time2');
var wert = document.frames[0].time2; (gleiche auch nochmal mit iframe)
var wert = document.frames['IFRAME_localhost'].getElementById('time2');
var wert = document.frames['IFRAME_localhost'].time2;
var wert = document.IFRAME_localhost.time2
...getElementsByName, getElementById................
in wert soll die errechnete Dauer ja drin stehen, die ich addieren will zu der vorhandenen Dauer auf dem Formular im CRM.
Außerdem kommt erschwerlich hinzu: das CRM bietet nur ein onload und onsave Ereignis. Weder beim Laden, noch beim Speichern möchte ich Addieren. Sobald ich meinen Button ausgeführt habe und die Minuten errechnet habe, soll sich der Wert des Textfeldes ändern. Das Textfeld hat lediglich das onchange-Ereignis. Kenne ich leider nicht so gut, ob es greift, sobald dort hineingeklickt wurde oder muss man etwas eingegeben haben....?
Ich hoffe, ich habe mein Problem einigermaßen verständlich erklären können. Mache noch nicht so lange JavaScript, das CRM kenne ich so gut wie überhaupt nicht.
Hilfe!
Danke!
Hallo,
ich würde jetzt mal so weiter forschen:
gibt es ein Objekt document.iframe oder document.frames ?
alert("document.iframe "+typeof document.iframe);
alert("document.frames "+typeof document.frames);
oder nachlesen, wie man Frames anspricht: http://de.selfhtml.org/javascript/objekte/frames.htm
var wert = document.iframe['IFRAME_localhost'].getElementById('time2');
wenn ich dann deinen iframe-Namen betrachte, könntest du auch über die
same origin policy stolpern? Wenn beide Dokumente nicht von der gleichen Domain kommen, ist das der Fall.
und schliesslich kann der Wert des Inputfeldes so ermittelt werden.
var wert=document.getElementById('time2').value;
// oder so
var wert=frames['IFRAME_localhost'].document.getElementById('time2').value;
Gruß plan_B
Hallo plan_B,
Danke! Richtig, ich habe auf meinem Localhost eine index2.php liegen, die ich auf das Formular über einen iFrame implementiert habe. Somit trägt das Same origin policy Gedöns auch. Ich müsste quasi mein Script nur auf die selbe Domain mit selbigen Port verlegen - wenn ich es richtig verstehe - und dann würde es klappen?
Auf dem Formular heißt es immer: neuen iFrame hinzufügen. Das Element wird dann auch immer mit prefix IFRAME_ versehen. Nun habe ich deine Ausgabe bzgl. iframe und frames ausprobiert und iframe ist undefined, hingegen ist frames als object bekannt.
Ich hoffe, heute mal ein richtiges Händchen dafür zu haben *g*
Ciao,
Ratlose