"We are back" « oc.at

Javascript: Browsersize und close

grOOvekill@ 30.06.2003 - 09:59 554 9
Posts

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2306
S'gott,

ich hätte hier eine kleine Javascript Frage:

1.) Ich habe folgende Funktion in ein HTML File eingefügt, welches mir ein Öffnen von Links in einem neuen Browserfenster ermöglicht:

function popMe(URL, fenster, stats){
window.open(URL, fenster, stats);
}


Hier der Aufruf:

<a href="JavaScript:popMe('http://www.bla.com/logo.jpg', '_blank', 'height=200,width=400,status=no,toolbar=no,menubar=no,location=no')">Link zu bla</a>


Funktioniert soweit ganz gut. Nur ist mir leider eben eingefallen, daß ich noch irgendwo im aufpoppenden Brwoserfenster einen Link einfügen wollte, der das Fenster auch wieder schließt. Sprich, unter dem jpg, das in dem neuen Browserfenster angezeigt wird, sollte "Fenster schließen" stehen. Ich weiß zwar, daß ich das mit <a href="javascript: close()">Fenster schliessen</a> machen kann, nur wo soll ich das einfügen? Geht ja eigentlich nur in dem HTML File, von welchem aus das Popup Fenster aufgerufen wird, oder? Ich hab' echt keinen blassen Schimmer, wie ich das neue Fenster mit diesem Link zusätzlich öffnen kann.

Ideen?

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
im popup:
window.close();

im aufrufer-dokument:
windowvar = window.open(....);
(...)
windowvar.close();

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2306
Naja, wenn ich ein Popup HTML File hätte, dann wäre es ja einfach. Wenn ich aber beispielsweise einfach ein jpg in einem Popup öffne, dann existiert ja nicht wirklich ein html File, oder? Das heißt, ich habe auch keine Möglichkeit, irgendwo was einzutragen. Geht das, was ich vorhabe, überhaupt? Ich dachte, man kann eventuell irgenwelche Parameter im aufrufenden Fenster angeben, die sich auf das Popup auswirken. Da liege ich wohl falsch, nän?

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
ja.

Sokrates

Big d00d
Avatar
Registered: Feb 2003
Location: depending on tim..
Posts: 164
Hi!
Wie willst du ein jpeg in einem Popup öffnen ohne html Grundgerüst?

z.B
<head>
<title>[ xxxxx]</title>
<LINK REL=stylesheet TYPE="text/css" HREF="css/fprtext.css">
<script>

var doPopUpX = (screen.width/2)-150;
var doPopUpY = (screen.height/2)-100;
var pos = "left="+doPopUpX+",top="+doPopUpY;

function doPopUp(){
doPopUpWindow = window.open("auswahl_mann_frau.html","valentin","width=410,height=205,"+pos);
}

</script>


im popup dann folgendes..

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title>Mann</title>
<LINK REL=stylesheet TYPE="text/css" HREF="css/fprtext.css">
</head>

<body>
<table width="100%" height="95%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td><img src="whatever.gif"></td>
<td>Vergessen Sie bloß nicht auf das Geschenk für ihre Liebste ; )!</td>
</tr>
</table>
<div align="center"> <A href="JavaScript:self.close()">Fenster schließen</a></div>

</body>
</html>

das geht und bilder kannst du klarerweise immer einfügen.

hth
Sokrates

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4477
Normalerweise "baut" man sich extra dafuer eine HTML Geruest das einfach das Bild schon zentriert (falls das popup resized wird usw.).

Wenn man es schlampig machen will und pfuschen will kann man aber den noetigen HTML code auch aus JS heraus generieren.

Du oeffnest das neue Fenster mit der open Methode und wendest dann dessen write bzw. writeln Methode an um reinzuschreiben.

Code:
function openmyl33tpopup(image) {
var w = window.open('', 'windowname', '');
w.writeln('<img src="' + image + '">');

Das ist das minimalistischste.

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
nicht eher so?
var w=window.open(...);
w.document.open();
w.document.writeln(...);
w.document.close();

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4477
ja eh w.document.*

Sokrates

Big d00d
Avatar
Registered: Feb 2003
Location: depending on tim..
Posts: 164
hmmm!
Stimmt aber ich persönlich finde eine eigene html site besser zu warten und übersichtlicher...
Sokrates

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4477
Zitat von grOOvekill@
Zitat von bene
das 8k3a ließt mit tbreds um bis zu 20° zu hoch aus

Noch eine Anregung wie man popup links richtig setzt.

Da popups usw. ultimativ auf js aufbauen ist es immer ein gewisser nachteil wenn nun ein agent ohne JS oder mit deaktiviertem JS auf einen Link trift.

Der Agent kann zwar das popup nicht oeffnen lassen, das heisst aber nicht das ihm die information verweht bleiben muss wenn der Autor seine Seite trotzdem "zugaenglich" machen moechte.

Schlechtes Beispiel:
<a href="javascript:popup('neueseite.html');">

Ein Agent ohne JS support sieht den Link und kann nichts damit anfangen. Das Pseudo-Protokoll "javascript:" sagt ihm nicht; der Benutzer hat einfach nur einen toten Link oder noch schlimmer eine Fehlermeldung.

Gutes Beispiel:
<a href="neueseite.html" onclick="popup('neueseite.html'); return false;">

Der Agent mit JS support reagiert zuerst auf das onclick-Event. Dies fuehrt den JS code aus und gibt "false" zurueck. Das sagt dem Agent er soll das Klick event nicht weiterbehandeln und somit auch den HREF _nicht_ folgen.

Der Agent ohne JS support hat einen gueltigen Link und kann trotzdem auf die neue Seite zugreifen; er ignoriert einfach das den definierten onclick handler.


Eine ausgefeilte Variante ist diese:
<a href="neueseite.html" target="neuesfenster" onclick="window.open(this.href, this.target); return false">

Ein Agent der kein JS kann, aber target interpretieren kann und auch fenster unterstuetzt kann den link in einem neuen fenster aufmachen ohne das die aktuelle seite history ist.

Ein Agent mit JS arbeitet wie gewohnt.

Ein weiterer Vorteil ist das man solche Links, dadurch das sie eine gueltiges HREF-Attribut enthalten, auch direkt Bookmarken kann.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz