HighDots Forums  

In ein DIV eines anderen Fensters schreiben

Javascript (German) Programmiersprache JavaScript. (de.comp.lang.javascript)


Discuss In ein DIV eines anderen Fensters schreiben in the Javascript (German) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Sven Hilmahr
 
Posts: n/a

Default In ein DIV eines anderen Fensters schreiben - 07-22-2007 , 04:30 PM






Ich möchte per Javascript den Inhalt einer Variablen in ein bestimmtes
DIV eines anderen Fensters schreiben.

function alertMe (meldung) {
alertfenster = window.open("alertfenster.html", "alertfenster", "");
ziel = alertfenster.document.getElementById("ausgabeconta iner");
ziel.innerhtml = meldung;
// ziel.document.write(meldung);
// alertfenster.document.close();
}

alertfenster.html enthält:

<div id="ausgabecontainer">
</div>

Die Funktion alertMe wird, wie gesagt, von einem anderen Fenster aus
ausgerufen. Leider klappt es weder mit innerhtml noch mit der
auskommentierten document.write Konstruktion. In #ausgabecontainer
landet nichts, und es wird auch nichts überschrieben, wenn ich dort
vorher etwas reinschreibe. Wenn ich mir die Variable "ziel" per
alert(ziel) ausgeben lasse erhalte ich [object HTMLDocument]
Ich teste mit Firefox. Was mache ich hier falsch?

Merci, Sven

Reply With Quote
  #2  
Old   
Bjoern Hoehrmann
 
Posts: n/a

Default Re: In ein DIV eines anderen Fensters schreiben - 07-22-2007 , 04:35 PM






* Sven Hilmahr wrote in de.comp.lang.javascript:
Quote:
ziel = alertfenster.document.getElementById("ausgabeconta iner");

Die Funktion alertMe wird, wie gesagt, von einem anderen Fenster aus
ausgerufen. Leider klappt es weder mit innerhtml noch mit der
auskommentierten document.write Konstruktion. In #ausgabecontainer
landet nichts, und es wird auch nichts überschrieben, wenn ich dort
vorher etwas reinschreibe. Wenn ich mir die Variable "ziel" per
alert(ziel) ausgeben lasse erhalte ich [object HTMLDocument]
Das klingt doch arg unwahrscheinlich. Warum sollte getElementById() ein
HTMLDocument zurückgeben?
--
Björn Höhrmann · mailto:bjoern (AT) hoehrmann (DOT) de · http://bjoern.hoehrmann.de
Weinh. Str. 22 · Telefon: +49(0)621/4309674 · http://www.bjoernsworld.de
68309 Mannheim · PGP Pub. KeyID: 0xA4357E78 · http://www.websitedev.de/


Reply With Quote
  #3  
Old   
Sven Hilmahr
 
Posts: n/a

Default Re: In ein DIV eines anderen Fensters schreiben - 07-22-2007 , 05:18 PM



Bjoern Hoehrmann <bjoern (AT) hoehrmann (DOT) de> wrote:

Quote:
* Sven Hilmahr wrote in de.comp.lang.javascript:
ziel = alertfenster.document.getElementById("ausgabeconta iner");

...
Wenn ich mir die Variable "ziel" per
alert(ziel) ausgeben lasse erhalte ich [object HTMLDocument]

Das klingt doch arg unwahrscheinlich. Warum sollte getElementById() ein
HTMLDocument zurückgeben?
OK, ich poste mal mehr vom Quelltext. Ich habe eine index.html, in der
per

<a onmouseup="tellMeCss(); return false;" href="#">tell me CSS</a>

eine Funktion tellMeCss() aufgerufen wird. Die sieht so aus:

function tellMeCss () {
var d1;
d1 = window.document.getElementById("mybody").bgColor;
alertMe(d1);
}

Ich versuche damit, herauszufinden, wie ich den Style eines Objektes (in
diesem Fall der body, der aus Testzwecken die ID "mybody" bekommen hat),
der über ein per link eingebundenes Style Sheet eine CSS Anweisung
bekommen hat. Aber das ist noch eine andere Baustelle, bei der ich
irgend etwas nicht richtig verstehe.

alertMe wird also aus der Funktion tellMeCSS aufgerufen.

function alertMe (meldung) {
alertfenster = window.open("alertfenster.html", "alertfenster", "");
ziel = alertfenster.document;
alert(ziel);
}

ergibt bei mir eine Meldung

[object HTMLDocument]

Sven


Reply With Quote
  #4  
Old   
Bjoern Hoehrmann
 
Posts: n/a

Default Re: In ein DIV eines anderen Fensters schreiben - 07-22-2007 , 05:44 PM



* Sven Hilmahr wrote in de.comp.lang.javascript:
Quote:
function tellMeCss () {
var d1;
d1 = window.document.getElementById("mybody").bgColor;
alertMe(d1);
}

Ich versuche damit, herauszufinden, wie ich den Style eines Objektes (in
diesem Fall der body, der aus Testzwecken die ID "mybody" bekommen hat),
der über ein per link eingebundenes Style Sheet eine CSS Anweisung
bekommen hat. Aber das ist noch eine andere Baustelle, bei der ich
irgend etwas nicht richtig verstehe.
Nun, .bgColor gibt dir den Wert des bgcolor='...' Attributs zurück,
nicht irgendwas, das mit CSS gesetzt wurde. Dafür müsstest du schon
getComputedStyle, .currentStyle, .runtimeStyle, o.ä. benutzen.
--
Björn Höhrmann · mailto:bjoern (AT) hoehrmann (DOT) de · http://bjoern.hoehrmann.de
Weinh. Str. 22 · Telefon: +49(0)621/4309674 · http://www.bjoernsworld.de
68309 Mannheim · PGP Pub. KeyID: 0xA4357E78 · http://www.websitedev.de/


Reply With Quote
  #5  
Old   
Ferry Bolhar
 
Posts: n/a

Default Re: In ein DIV eines anderen Fensters schreiben - 07-23-2007 , 02:17 AM



Sven Hilmahr:

Quote:
function tellMeCss () {
var d1;
d1 = window.document.getElementById("mybody").bgColor;
alertMe(d1);
}
Probiers mal mit:

var d1 = document.getElementById("mybody").style.bgColor;
^^^^^
Quote:
function alertMe (meldung) {
alertfenster = window.open("alertfenster.html", "alertfenster", "");
ziel = alertfenster.document;
alert(ziel);
}

ergibt bei mir eine Meldung

[object HTMLDocument]
Natürlich, was hast du sonst erwartet? Deine Funktion kann man
kürzer auch

alert(open("alertfenster.html","alertfenster"));

schreiben. Du gibst also keinen Text, sondern das Objekt des neuen,
mit open() angelegten Fensters aus. Da das meist wenig nützlich ist, greift
JavaScript in solchen Fällen auf eine interne Textdarstellung des Objektes
zurück: [object <objecttype>]. Der <objecttype> ist vergleichbar mit
einer Klasse und sagt dir, "um was für ein Objekt" es sich handelt.

Eine solche Ausgabe kann für Debuggingzwecke ganz hilfreich sein,
weil man dann überprüfen kann, ob das erzeugte Objekt wirklich vom
gewünschten Typ ist oder ob ein Objektattribut, das ein Objekt ent-
halten soll, auch das (richtige) Objekt enthält (oder ob eine selbst-
geschriebene toString()-Methode funktioniert ;-). Ansonsten bringt
sie eher wenig.

Mir ist noch nicht ganz klar, was du mit deiner alertMe() Funktion
eigentlich ausgeben willst.

LG, Ferry

--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol (AT) adv (DOT) magwien.gv.at


Quote:
Sven



Reply With Quote
  #6  
Old   
Ferry Bolhar
 
Posts: n/a

Default Re: In ein DIV eines anderen Fensters schreiben - 07-23-2007 , 02:43 AM



Ich schrieb:

Quote:
Natürlich, was hast du sonst erwartet? Deine Funktion kann
man kürzer auch

alert(open("alertfenster.html","alertfenster"));
und war damit zu schnell. Soll natürlich

alert(open("alertfenster.html","alertfenster").doc ument);

heißen. Sorry.

LG, Ferry

--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol (AT) adv (DOT) magwien.gv.at




Reply With Quote
  #7  
Old   
Bjoern Hoehrmann
 
Posts: n/a

Default Re: In ein DIV eines anderen Fensters schreiben - 07-23-2007 , 06:48 AM



* Ferry Bolhar wrote in de.comp.lang.javascript:
Quote:
Sven Hilmahr:

function tellMeCss () {
var d1;
d1 = window.document.getElementById("mybody").bgColor;
alertMe(d1);
}

Probiers mal mit:

var d1 = document.getElementById("mybody").style.bgColor;
Das kann nicht funktionieren, dafür müsste das Element ein style=''
Attribut haben und eine 'bgColor: ...' Eigenschaft dort setzen. Das
kann es aber nicht, Mangels einer solchen Eigenschaft.
--
Björn Höhrmann · mailto:bjoern (AT) hoehrmann (DOT) de · http://bjoern.hoehrmann.de
Weinh. Str. 22 · Telefon: +49(0)621/4309674 · http://www.bjoernsworld.de
68309 Mannheim · PGP Pub. KeyID: 0xA4357E78 · http://www.websitedev.de/


Reply With Quote
  #8  
Old   
Martin Honnen
 
Posts: n/a

Default Re: In ein DIV eines anderen Fensters schreiben - 07-23-2007 , 08:00 AM



Sven Hilmahr wrote:
Quote:
Ich möchte per Javascript den Inhalt einer Variablen in ein bestimmtes
DIV eines anderen Fensters schreiben.

function alertMe (meldung) {
alertfenster = window.open("alertfenster.html", "alertfenster", "");
ziel = alertfenster.document.getElementById("ausgabeconta iner");
ziel.innerhtml = meldung;
Die Eigenschaft ist innerHTML, nicht innerhtml. Aber der Ansatz kann so
nicht klappen, denn window.open() oeffnet nur das Fenster, wartet aber
nicht auf das Laden des Dokumentes, so dass der direkte Zugriff auf
alertfenster.document bzw.
alertfenstwer.document.getElementById("ausgabecont ainer") nicht klappen
kann.
Was man machen kann, ist ein Ueberschreiben des gesamten Dokumentes:
var fenster = window.open(...);
fenster.document.open();
fenster.document.write(...);
fenster.document.close();

--

Martin Honnen
http://JavaScript.FAQTs.com/


Reply With Quote
  #9  
Old   
Ferry Bolhar
 
Posts: n/a

Default Re: In ein DIV eines anderen Fensters schreiben - 07-23-2007 , 08:57 AM



Bjoern Hoehrmann:

Quote:
Das kann nicht funktionieren, dafür müsste das Element ein style=''
Attribut haben und eine 'bgColor: ...' Eigenschaft dort setzen. Das
kann es aber nicht, Mangels einer solchen Eigenschaft.
Vielleicht versteh' ich es falsch, aber ich dachte, dass

document.bgColor

und document.style.backgroundColor

dasselbe ist?

Ersteres ist eine Eigenschaft des document (bzw. "body") Objektes
ansich, deren Setzen das darunterliegende Style-Attribut (und damit
hier eben die Hintergrundfarbe) beeinflusst. Zweiteres manipuliert
eben direkt auf Style-Ebene (wobei ich annehme, dass dann
document.bgColor ebenfalls nachgezogen wird). Oder ist das nicht
so? Falls nein, worin liegt dann der Unterschied?

LG, Ferry

--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol (AT) adv (DOT) magwien.gv.at




Reply With Quote
  #10  
Old   
Bjoern Hoehrmann
 
Posts: n/a

Default Re: In ein DIV eines anderen Fensters schreiben - 07-23-2007 , 10:43 AM



* Ferry Bolhar wrote in de.comp.lang.javascript:
Quote:
Vielleicht versteh' ich es falsch, aber ich dachte, dass

document.bgColor

und document.style.backgroundColor

dasselbe ist?
document.body.bgColor ist <body bgcolor='...'>. document.body.style.
backgroundColor ist <body style='background-color: ...'>. Es gibt noch
eine Reihe anderer Möglichkeiten die Farbe zu setzen, zum Beispiel mit
<style ...>body { background-color: ... }</style>, was dann ebenfalls
über keine der beiden Eigenschaften angesprochen werden kann.
--
Björn Höhrmann · mailto:bjoern (AT) hoehrmann (DOT) de · http://bjoern.hoehrmann.de
Weinh. Str. 22 · Telefon: +49(0)621/4309674 · http://www.bjoernsworld.de
68309 Mannheim · PGP Pub. KeyID: 0xA4357E78 · http://www.websitedev.de/


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.