XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   Knowledge Base (http://xhtmlforum.de/forumdisplay.php?f=79)
-   -   window.open...oder? (http://xhtmlforum.de/showthread.php?t=34369)

supersonic 09.02.2005 17:46

window.open...oder?
 
hallo,

sagt mal wenn man ein neues definiertes fenster öffnen lassen möchte geht das nur mit javascript (window.open) oder gibt es da auch eine elegantere lösung???

besten dank.

feelx 10.02.2005 15:40

Hi Supersonic

Du hast 3 Möglichkeiten:

1. xhtml transitional, wo "target" erlaubt ist

2. auf target verzichten - und es dem User überlassen
Nur kurz zu dieser Diskussion: Ich sehe ein paar seltene Grenzfälle, wo ein Öffnen im neuen Fenster Sinn machen kann. Z.B. PDFs, Anfahrtsskizzen, Grossansichten von Bildern oder Skizzen, Zeichnungen und dergleichen usw.. Egal welche Variante du wählst, sollten aber imho "neue Fenster", so sparsam wie möglich eingesetzt werden.

3. JavaScript - wie du erwähnt hast mit window.open.
Ich nehme dann folgende Lösung
Code:

Click me
Sie ermöglicht nämlich auch jenen ~2%, die JS ausgeschaltet haben, ein Öffnen - dann allerdings im selben Fenster - aber immerhin bleibt die Navigation so auch bei JS=off intakt.

greets

wahsaga 10.02.2005 15:51

Zitat:

Zitat von feelx
Code:

Click me

- statt this.getAttribute('href') kannst du auch gleich this.href verwenden.
- der zweite parameter von window.open ist nicht optional.
- es empfiehlt sich, statt return false den rückgabewert von window.open zurückgeben zu lassen. so bist du etwas mehr auf der sicheren seite, wenn das JS-popup nicht geöffnet werden konnte (popupblocker o.ä.)

feelx 10.02.2005 16:38

@wahsaga: Danke für die Hinweise. Gehe dem nach. ABER:
Imho sind bei window.open alle parameter (laut Microsoft auch URL) optional, somit auch 'Name'. Das steht zumindest in meinem Buch (JS Kompendium, M+T, Tobias Hauser, 2004). Da dies aber auch nicht ein Garant für Zuverlässigkeit ist, habe ich jetzt mal google bemüht!

Und du wirst lachen. Es gibt zwei Standpunkte. Das kann nicht sein, aber sieh' selbst:
Zitat:

open(URL, [name], [features], [replace]) Opens a new browser window. "Name" argument specifies a name that you can use in the target attribute of your <a> tag. "Features" allows you to show/hide various aspects of the window interface. "Replace" is a Boolean argument that denotes whether the URL loaded into the new window should add to the window's history list. A value of true causes URL to not be added. Example(s)
Quelle
oder
Zitat:

window.open( [sURL] [, sName] [, sFeatures] [, bReplace])
Microsoft

Hingegen mozilla
Zitat:

WindowObjectReference = window.open(strUrl, strWindowName [, strWindowFeatures]);
Gecko-Referenz

Habe auch Beispiele gefunden, wo URL + NAME nicht Optional waren- also deinen Standpunkt vertreten.. Aber sag mal. WO findet man die deiner Meinung verlässlichste Referenz - bei JS habe ich immer Probleme was richtig gutes zu finden...

Wie empfielst du denn den Rückgabewert zu überprüfen? Kannst du da mal ein Beispiel machen. Danke :)

wahsaga 10.02.2005 16:56

Zitat:

Zitat von feelx
Imho sind bei window.open alle parameter (laut Microsoft auch URL) optional, somit auch 'Name'.

hm, möglich, dass die ansichten darüber geteilt sind.
hab jetzt gerade auch keine lust, mit in ECMA-script-spezifikationen o.ä. zu vergraben.

im zweifel würde ich nach dem "wer hat's erfunden ...?"-prinzip zuerst mal bei netscape schauen - und die sehen den fensternamen wohl nicht als optional.

aber javascript als sprache ist heutzutage eh so "verwässert", dass man bzgl. diesem punkt wohl kein wirklich klare und allgemeingültige aussage mehr wird treffen können ...


Zitat:

Wie empfielst du denn den Rückgabewert zu überprüfen? Kannst du da mal ein Beispiel machen. Danke :)
die negation hatte ich noch vergessen ...
na ja, und dann einfach onClick="return !window.open(...)" halt.

wenn das fenster geöffnet werden konnte, gibt window.open die referenz darauf zurück, was zu true evaluiert. plus negation davor, hast du das return false aus dem eventhandler, um die ausführung des links zu unterbinden.
geht window.open schief, liefert es false zurück, dein eventhandler gibt true zurück, der link wird trotzdem noch ausgeführt.

supersonic 11.02.2005 22:42

danke euch beiden.

wobei eure diskussion meinen wissenstand bei js um weiten überragt (es ist eigentlich nicht mein gebiet...)
ich wollte einfach nur wissen ob man ein neues definiertes fenster auch ohne js bekommt-geht wohl dann eher doch nicht. also habe ich mich doch für die window.open variante entschieden...

@ feelx: bei mir trifft leider einer dieser grenzfälle zu. naja, wird schon schief gehen.

wobei mich jetzt ein anderes problem nervt. das alte übel mit der kompatilität zu älteren browsern...


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:54 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2020, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2020