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
  #11  
Old   
Ferry Bolhar
 
Posts: n/a

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






Bjoern Hoehrmann:

Quote:
document.body.bgColor ist <body bgcolor='...'>.
document.body kenne ich eigentlich nicht. Im Browser-DOM
gibt es "window" (bzw. "frames") als oberstes Element, dann
kommt "document" und dann eigentlich schon alle Elemente
innerhalb des Dokuments. Was ist "body"? Eine weitere Schicht
im DOM?

Natürlich kenne ich das <body>-Tag, aber bisher hätte ich
gemeint, dass eben das dem "document"-Element in DOM
entspricht. Wozu dann aber noch "document.body"?

Quote:
document.body.style.backgroundColor ist
body style='background-color: ...'>.
Worin besteht der Unterschied in einer Definition

<body bgcolor='...'> und

<body style="background-color:..."> ?

Quote:
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.
Ich meine, dass <style>body {background-color:...}</style>

von der Auswirkung her dasselbe sein sollte wie

<body style="background-color:...">

nur anders definiert: einmal direkt in einem CSS-Abschnitt,
einmal als Style-Attribut direkt beim Tag.

Aber mir ist der Unterschied bzw. die Auswirkung zwischen

document.bgColor (bzw. document.body.bgColor) und

document.style.backgroundColor

nicht klar. Oder sind es nur zwei unterschiedliche Arten,
letztlich ohnehin dieselbe Eigenschaft zu setzen?

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
  #12  
Old   
Sven Hilmahr
 
Posts: n/a

Default Re: In ein DIV eines anderen Fensters schreiben - 07-24-2007 , 05:24 AM






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

Quote:
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.
Antwort leider erst jetzt, weil ich gestern nicht zum Newsgroup lesen
kam:

Danke, das Thema CSS auslesen scheint etwas komplizierter zu sein als
ich dachte.
Allerdings, in diesem speziellen Fall gibt mir Firefox tatsächlich den
korrekten Farbwert aus (Safari dagegen nicht).

Firebug und Aptana meckern die Variable ziel an:

TypeError: ziel has no properties

Ziel wird in alertMe definiert:

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

Auch die Variante (um Namenskonflikten vorzubeugen)

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

funktioniert nicht. Was stimmt nicht an ziel?

Sven


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

Default Re: In ein DIV eines anderen Fensters schreiben - 07-24-2007 , 05:24 AM



Martin Honnen <mahotrash (AT) yahoo (DOT) de> wrote:

Quote:
function alertMe (meldung) {
alertfenster = window.open("alertfenster.html", "alertfenster", "");
ziel = alertfenster.document.getElementById("ausgabeconta iner");
ziel.innerhtml = meldung;

Die Eigenschaft ist innerHTML, nicht innerhtml.
OK, danke

Quote:
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.
Mmh.

Quote:
Was man machen kann, ist ein Ueberschreiben des gesamten Dokumentes:
var fenster = window.open(...);
fenster.document.open();
fenster.document.write(...);
fenster.document.close();
ich wollte die Meldung schon an eine bestimmte Stelle ins alertfenster
schreiben, und eben nicht das ganze Dokument überschreiben.

Geht das überhaupt nicht?

Sven


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

Default Re: In ein DIV eines anderen Fensters schreiben - 07-24-2007 , 05:24 AM



Ferry Bolhar <bol (AT) adv (DOT) magwien.gv.at> wrote:

Quote:
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.
ich will nur ein bisschen rumprobieren. Ich versuche gerade, mir
Javascript beizubringen und wollte einfach eine Meldung von in ein DIV
schreiben, das sich in einem anderen Fenster befindet. Die Sache mit dem
Style ist dabei eher unwichtig, das sind nur die Reste von einem anderen
Experiment.

Mal ohne die CSS Geschichte:

function alertMe (meldung) {
meinalertfenster = window.open("alertfenster.html",
"alertfenster", "width=400px, height= 300px");
var ziel;
ziel = meinalertfenster.document.getElementById("ausgabec ontainer");
ziel.innerHTML = meldung;
}


function tellMeBla () {
var d1;
d1 = "hallo";
alertMe(d1);
}

Ich rufe über einen Link tellMeBla auf, das übergibt "hallo" an alertMe
und sollte dann ins DIV ausgabecontainer im neuen Fenster
alertfenster.html (bzw "alerfenster") geschrieben werden.

Aber Martin Honnen schrieb in
<46a4a687$0$21002$9b4e6d93 (AT) newsspool1 (DOT) arcor-online.net>, dass das nicht
klappen kann, weil die Funktion nichts über das neue Dokument weiß und
nur das Fenster an sich kennt (wenn ich Martin richtig verstanden habe).

Aber wie ginge das dann?

Sven


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

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



Sven Hilmahr wrote:

Quote:
ich wollte die Meldung schon an eine bestimmte Stelle ins alertfenster
schreiben, und eben nicht das ganze Dokument überschreiben.

Geht das überhaupt nicht?
Es geht sehr einfach aus dem geoeffneten Fenster heraus. Aus dem
oeffnenden Fenster heraus gibt es immer ein Timing-Problem, erst dann
auf das Dokument im geoeffneten Fenster zuzugreifen, wenn es geladen ist.

--

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


Reply With Quote
  #16  
Old   
Alexander Clauss
 
Posts: n/a

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



Sven Hilmahr <shilmahr (AT) despammed (DOT) com> wrote:

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

funktioniert nicht. Was stimmt nicht an ziel?
Da nach dem Öffnen des Fensters das Dokument erst noch geladen werden
muß und der JavaScript nicht wartet, bis das Dokument im neuen Fenster
fertig geladen ist, kann es sein, daß zu dem Zeitpunkt, an dem Du das
"ziel" auslesen willst, dieses Dokument noch gar nicht existiert.


--
Alexander


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

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



Bjoern Hoehrmann:

Quote:
nicht klar. Oder sind es nur zwei unterschiedliche Arten,
letztlich ohnehin dieselbe Eigenschaft zu setzen?

Bei beiden dreht es sich um die Hintergrundfarbe, ansonsten
haben die wenig miteinander zu tun.
Na immerhin, schon mal eine Gemeinsamkeit... ;-)

Im Ernst, lass mich meine Frage anders formulieren:

Wann wird man welche Art verwenden? Wo liegen Vor- und
Nachteile der beiden Arten?

Und welchen Unterschied macht es, die Hintergrundfarbe mit

document.body.bgColor oder mit
document.style.backgroundColor

zu setzen, da es ja - bezogen auf die Hintergrundfarbe des
Dokuments - gleich ist, ob die nun über "body" oder über das
übergeordnete "document" Element gesetzt wird?

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
  #18  
Old   
Bjoern Hoehrmann
 
Posts: n/a

Default Re: In ein DIV eines anderen Fensters schreiben - 07-24-2007 , 12:08 PM



* Ferry Bolhar wrote in de.comp.lang.javascript:
Quote:
Und welchen Unterschied macht es, die Hintergrundfarbe mit

document.body.bgColor oder mit
document.style.backgroundColor

zu setzen, da es ja - bezogen auf die Hintergrundfarbe des
Dokuments - gleich ist, ob die nun über "body" oder über das
übergeordnete "document" Element gesetzt wird?
`document` hat kein .style Attribut; der Unterschied ist simpel, mit dem
einen veränderst du das bgcolor='...' Attribut, mit dem anderen das CSS-
basierte style='...' Attribut. bgcolor='...' sollte man nicht verwenden,
weil CSS für sowas besser geeignet ist.
--
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
  #19  
Old   
Sven Hilmahr
 
Posts: n/a

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



Alexander Clauss <aclauss (AT) hrzpub (DOT) tu-darmstadt.de> wrote:

Quote:
funktioniert nicht. Was stimmt nicht an ziel?

Da nach dem Öffnen des Fensters das Dokument erst noch geladen werden
muß und der JavaScript nicht wartet, bis das Dokument im neuen Fenster
fertig geladen ist, kann es sein, daß zu dem Zeitpunkt, an dem Du das
"ziel" auslesen willst, dieses Dokument noch gar nicht existiert.
OK, ich hab jetzt noch eine Funktion mit setTimeOut eingebaut:

function alertMe (meldung) {
meinalertfenster = window.open("alertfenster.html", "alertfenster");
setTimeout("setZiel(meldung, meinalertfenster)",1000);
}

function setZiel (meldung, meinalertfenster) {
ziel = meinalertfenster.document.getElementById("ausgabec ontainer");
ziel.innerHTML = meldung;
}

function tellMeBla () {
var d1;
d1 = "hallo";
alertMe(d1);
}

Jetzt kommt die Fehlermeldung mit einer Sekunde Verzögerung:

Quote:
meldung is not defined
setTimeout("setZiel(meldung, meinalertfenster)",1000);
warum das denn nicht? meldung wird doch aus tellMeBla übergeben und
enthält die Variable d1.

Sven


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

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



Bjoern Hoehrmann:

Quote:
`document` hat kein .style Attribut; der Unterschied ist simpel, mit dem
einen veränderst du das bgcolor='...' Attribut, mit dem anderen das CSS-
basierte style='...' Attribut.
Ja, das ist mir schon klar, aber worin bestehen die Auswirkungen?
Wie ändert sich die Hintergrundfarbe mit:

document.bgColor = 'blue';

wie mit:

document.body.bgColor = 'blue';

und wie mit:

document.body.style.backgroundColor = 'blue';

Ich konnte beim Testen keinen Unterschied feststellen.

Quote:
bgcolor='...' sollte man nicht verwenden, weil CSS für sowas besser
geeignet ist.

Was meinst du mit "besser geeignet"? Alle drei oben gezeigten
Varianten funktionieren einwandfrei.

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
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.