Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Ohne Javascript Fenster öffnen (https://www.delphipraxis.net/99656-ohne-javascript-fenster-oeffnen.html)

xZise 15. Sep 2007 14:07


Ohne Javascript Fenster öffnen
 
Hi DP,
auf meiner Website, habe ich auch Screenshots, welche z.Zt. in einen extra Fenster angezeigt werden.
Auf dieser Seite befindet sich ein Link "Anzeigen" (mitte rechts), welcher ein Fenster mit einen Screenshot öffnet.

Aber wenn jetzt Benutzer Javascript ausstellen, wie kriege ich es hin, dass es immerhin in einen neuen Fenster/Tab geöffnet wird.
Bestimmt irgendwie über "Noscript", aber nun soll er entweder diese Zeile anwenden:
Code:
<a href="screenshot.php?img=qd&amp;idx=0" onclick="windowOpen(this.href); return false">Anzeigen</td>
oder diese:
Code:
<a href="screenshot.php?img=qd&amp;idx=0" target=_blank>Anzeigen</td>
Aber über <noscript>, kann ich kein "alternativen" Code einbauen. Bzw. "<ifscript>" tag oder so ;)

Antürlich könnte ich den "javascriptlink" in ein "<sript>"-Tag schreiben und dass dann über document.write ausgeben ^^ Aber dass muss anders gehen :)

MfG
xZise

Ghostwalker 15. Sep 2007 14:16

Re: Ohne Javascript Fenster öffnen
 
Code:
<a href="screenshot.php?img=qd&amp;idx=0" target="_blank">Anzeigen</td>
Das funktioniert immer, egal ob der Benutzer nun Javascript aktiviert hat oder nicht, da es reines HTML ist :)

Thorben77 15. Sep 2007 14:19

Re: Ohne Javascript Fenster öffnen
 
Ansonsten sollte es so gehen:
Code:
<a href="screenshot.php?img=qd&amp;idx=0" [b]onclick="windowOpen(this.href); return false"[/b] [b]target="_blank"[/b]>Anzeigen</td>

Ghostwalker 15. Sep 2007 14:21

Re: Ohne Javascript Fenster öffnen
 
Zitat:

Zitat von Thorben77
Ansonsten sollte es so gehen:
Code:
<a href="screenshot.php?img=qd&amp;idx=0" [b]onclick="windowOpen(this.href); return false"[/b] [b]target="_blank"[/b]>Anzeigen</td>

Warum ein onClick für Javascript, wenn kein Javascript notwendig ist ?

RobertP 15. Sep 2007 14:35

Re: Ohne Javascript Fenster öffnen
 
Zitat:

Zitat von Ghostwalker
Code:
<a href="screenshot.php?img=qd&amp;idx=0" target="_blank">Anzeigen</td>
Das funktioniert immer, egal ob der Benutzer nun Javascript aktiviert hat oder nicht, da es reines HTML ist :)

Aber so kann man die Fenstergröße usw. nicht bestimmen!

Und bei der Lösung von Thorben wird das Fenster doch zweimal geöffnet (1x mit JS und 1x normal) oder?

Thorben77 15. Sep 2007 14:36

Re: Ohne Javascript Fenster öffnen
 
Zitat:

Zitat von Ghostwalker
Warum ein onClick für Javascript, wenn kein Javascript notwendig ist ?

Weil xZise in seiner windowOpen()-Funktion noch die Größe des geöffneten Fensters anpasst.

Besser find ichs, wenn man auf man auf ein neues Fenster verzichtet.

Zitat:

Zitat von RobertP
Und bei der Lösung von Thorben wird das Fenster doch zweimal geöffnet (1x mit JS und 1x normal) oder?

Durch das return false sollte der Link eigentlich nicht mehr geöffnet werden.

xZise 15. Sep 2007 14:37

Re: Ohne Javascript Fenster öffnen
 
Weil das "target=_blank" nur im "notfall" (also bei deaktivierten JS) benutzt werden soll.
Ansosnten soll eben ein einzelnes Fenster angezeigt werden.
z.Zt. verwende ich noch die "document.write"-Variante... Ich werde mir nachher die andere Variante anschauen :)

FAlter 15. Sep 2007 14:42

Re: Ohne Javascript Fenster öffnen
 
Hi,

mit JavaScript Link über document.write setzen und ohne über <noscript> sollte gehen.

Mfg
FAlter

Ghostwalker 15. Sep 2007 17:35

Re: Ohne Javascript Fenster öffnen
 
@Falter

Ähm..document.write ist ein Javascript-Befehl....das kann bei ausgeschaltetem Javascript nicht funktionieren.

@xZise

Es kann nur so funktionieren, wie du das bereits auf deiner Seite hast. Da HTML keine Programmiersprache ist, stellt sie logischerweise auch keine Möglichkeiten zur Verfügung, logische Vergleiche anzustellen (bzgl <IFSCRIPT>). Und in Javascript prüfen ob Javascript läuft wäre nicht sehr sinnvoll.

omata 15. Sep 2007 17:47

Re: Ohne Javascript Fenster öffnen
 
Zitat:

Zitat von Ghostwalker
Ähm..document.write ist ein Javascript-Befehl....das kann bei ausgeschaltetem Javascript nicht funktionieren.

...und genau das ist der Witz dabei.

Bei vorhandem Javascript funktioniert document.write und bei nicht vorhandenem Javascript wird der NOSCRIPT-Teil ausgeführt.

Gruss
Thorsten

xZise 15. Sep 2007 18:40

Re: Ohne Javascript Fenster öffnen
 
Nagut ^^ So läufts auch ;)

Schade wegen <IFSCRIPT> ^^

turboPASCAL 15. Sep 2007 18:57

Re: Ohne Javascript Fenster öffnen
 
OT
Zitat:

Ohne Javascript Fenster öffnen
Verwende den normalen Weg, hingehen und manuell die Verriegelung lösen. Anschliesend Fenster je nach Entriegelungsmöglichkeit die Öffnungsposition einstellen.

:wall: :zwinker:

Progman 15. Sep 2007 21:19

Re: Ohne Javascript Fenster öffnen
 
man kann auch mittels php ein Fenster definiert (mit Breite und Höhe) öffnen. Hab das mal irgendwo gesehen, nur ob ich den Code so schnell wiederfinde, weiß ich nicht. Aber ne Suche in div. php-Manuals dürfte erfolgreich sein.

Matze 15. Sep 2007 21:22

Re: Ohne Javascript Fenster öffnen
 
Zitat:

Zitat von Progman
man kann auch mittels php ein Fenster definiert (mit Breite und Höhe) öffnen. Hab das mal irgendwo gesehen, nur ob ich den Code so schnell wiederfinde, weiß ich nicht. Aber ne Suche in div. php-Manuals dürfte erfolgreich sein.

Dass das geht kann ich mir nicht vorstellen.

DGL-luke 15. Sep 2007 21:34

Re: Ohne Javascript Fenster öffnen
 
php kann vieles mit den richtigen erweiterungen :P

aber es kann sicher nur den HTML-/JS-Code an den Browser schicken, der ihn dazu veranlasst, ein fenster zu öffnen.

Progman 15. Sep 2007 21:37

Re: Ohne Javascript Fenster öffnen
 
Hier der Aufrufcode:
<a href="#" onClick="MyWindow=window.open('viewer.php?file=<?p hp echo $file;?>','MyWindow','toolbar=no,location=no,direc tories=no,status=yes,menubar=no,scrollbars=no,resi zable=no,width=[<?php echo "$width";?>],height=[<?php echo "$height";?>],left=20,top=20'); return false;">
Das Beispiel stammt aus einer Bildergalerie. Die viewer.php zeigt dann das Großbild an.
Müsste dann natürlich entsprechend mofifiziert werden.

Matze 15. Sep 2007 21:40

Re: Ohne Javascript Fenster öffnen
 
Code:
<a href="#" onClick="MyWindow=window.open ...
Das ist aber JS. ;)

Progman 15. Sep 2007 21:49

Re: Ohne Javascript Fenster öffnen
 
window.open ist ein HTML-Object, genauso wie input, form etc...

Matze 15. Sep 2007 21:53

Re: Ohne Javascript Fenster öffnen
 
Nein, das ist ganz sicher JS. Google doch einfach mal danach Bei Google suchenWindow.Open. Hier eine von vielen URLs (achte auf die Verzeichnisstruktur): http://www.tu-chemnitz.de/docs/selfhtml/javascript/objekte/window.htm. Ich zitiere:

Zitat:

Dieser Abschnitt behandelt die vordefinierten Objekte von JavaScript und stellt ihre Eigenschaften und Methoden jeweils kurz vor.

omata 15. Sep 2007 21:54

Re: Ohne Javascript Fenster öffnen
 
Zitat:

Zitat von Progman
window.open ist ein HTML-Object, genauso wie input, form etc...

Wo steht das? Hier z.B. nicht.

Progman 15. Sep 2007 21:58

Re: Ohne Javascript Fenster öffnen
 
Hier Window ;)

Pfoto 15. Sep 2007 22:07

Re: Ohne Javascript Fenster öffnen
 
Hi!

zwar kein Fenster im klassischen Sinne, aber um
z.B. Bilder über der eigentlichen Seite anzuzeigen
ist auch ein Layer per CSS möglich.
Den könntst du ohne Javascript, rein mit den Pseudo-
Klassen von CSS (:Hover, :Focus, :Active etc.)
aufrufen.

Der Layer ist dabei zuvor per "display: none;" versteckt
und wird dann z.B. bei a:Hover wieder mit "display: block;"
eingeblendet.
Mit der absoluten Positionierung und einem erhöhten z-index
kannst du das Fenster dann über allem schweben lassen.
(Die fixe Positionierung funktioniert im IE 6 ja leider
nur im body-Element)


Gruß
Pfoto

Progman 15. Sep 2007 22:08

Re: Ohne Javascript Fenster öffnen
 
also, ich seh das so, dass "window" ein HTML/DHTML-Object ist, das auch von JavaScript genutzt wird, aber auch ohne JavaScript funktioniert. Man kann das sogar im Delphi (TWebBrowser) im Programm-Code nutzen, genau wie document.irgendwas und so. Jedenfalls funktionierte der vorhin gepostete php-code auch in Browsern, bei denen JavaScript ausgeschaltet war. :wink:

Progman 15. Sep 2007 22:10

Re: Ohne Javascript Fenster öffnen
 
... und die CSS-Variante von Pfoto wäre auch ne Überlegung wert....

omata 15. Sep 2007 22:14

Re: Ohne Javascript Fenster öffnen
 
Zitat:

Zitat von Progman
<a href="#" onClick="MyWindow=window.open('viewer.php?file=<?p hp echo $file;?>','MyWindow','toolbar=no,location=no,direc tories=no,status=yes,menubar=no,scrollbars=no,resi zable=no,width=[<?php echo "$width";?>],height=[<?php echo "$height";?>],left=20,top=20'); return false;">

Dieses Beispiel soll auch funktionieren wenn keine Script-Sprache im Browser aktiv ist?

Mit Welcherm Browser wurde das getestet? Mit dem Internet-Explorer?

Matze 15. Sep 2007 22:17

Re: Ohne Javascript Fenster öffnen
 
Zitat:

Zitat von Progman
Hier Window ;)

Jain, dabei handelt es sich um eine DHTML-Spezifikation, also um dynamisches HTML.

Ich zitiere dazu Wikipedia:

Zitat:

[...] während Webseiten mit dynamischen HTML durch Scripting dynamisiert werden, welches nach dem Abruf im Browser ausgeführt wird
[...]
Dynamisches HTML wird mittels der folgenden Techniken realisiert:

* HTML zum Verfassen von Dokumenten
* eine clientseitige Skriptsprache, meistens JavaScript
[...]
Aber diese Diskussion bringt keinem was.

Da xZise keinen XHTML-, sondern den HTML-Standard nutzt, kann man ja noch target="_blank" nutzen, was es in XHTML nicht mehr gibt (Grund: Der Surfer soll selbst entscheiden können und nicht dazu gezwungen werden, wann Fenster geöffnet werden. Das lässt sich daher in jedem modernen Browser einstellen). Eine CSS-Lösung ist natürlich auch was schönes, öffnet jedoch kein neues Fenster.

Mein Fazit: Ein neues Fenster kann man nur mittels target="blank oder per JS öffnen.

Progman 15. Sep 2007 22:26

Re: Ohne Javascript Fenster öffnen
 
Zitat:

The DOM is organized as a hierarchy of browser components. At the top-most level is the browser (navigator) object. At the next level down the hierarchy is the window object, the main browser window within which Web pages appear. Within the window are optional frame objects (if the window is divided into frames), and these window and frame objects contain the document objects representing Web pages. The page itself contains other objects, including XHTML tag objects and form objects, the latter composed of the various field objects, or controls, populating the form. This general hierarchy is shown in the illustration below, which identifies several of the objects comprising the Document Object Model for Web pages displayed in frames.
Danach ist "window" ein DOM-Object, das nichts mit herkömmlichen Javascript zu tun hat. Und jetzt geh ich schlafen :) :)

xZise 15. Sep 2007 22:56

Re: Ohne Javascript Fenster öffnen
 
Zitat:

Zitat von Pfoto
Hi!

zwar kein Fenster im klassischen Sinne, aber um
z.B. Bilder über der eigentlichen Seite anzuzeigen
ist auch ein Layer per CSS möglich.
Den könntst du ohne Javascript, rein mit den Pseudo-
Klassen von CSS (:Hover, :Focus, :Active etc.)
aufrufen.

Der Layer ist dabei zuvor per "display: none;" versteckt
und wird dann z.B. bei a:Hover wieder mit "display: block;"
eingeblendet.
Mit der absoluten Positionierung und einem erhöhten z-index
kannst du das Fenster dann über allem schweben lassen.
(Die fixe Positionierung funktioniert im IE 6 ja leider
nur im body-Element)


Gruß
Pfoto

Wäre es möglich das irgendwie zu erklären xD

Also Codetechnisch :)

Ghostwalker 16. Sep 2007 08:35

Re: Ohne Javascript Fenster öffnen
 
Zitat:

Zitat von Progman
Zitat:

The DOM is organized as a hierarchy of browser components. At the top-most level is the browser (navigator) object. At the next level down the hierarchy is the window object, the main browser window within which Web pages appear. Within the window are optional frame objects (if the window is divided into frames), and these window and frame objects contain the document objects representing Web pages. The page itself contains other objects, including XHTML tag objects and form objects, the latter composed of the various field objects, or controls, populating the form. This general hierarchy is shown in the illustration below, which identifies several of the objects comprising the Document Object Model for Web pages displayed in frames.
Danach ist "window" ein DOM-Object, das nichts mit herkömmlichen Javascript zu tun hat. Und jetzt geh ich schlafen :) :)

Das ist Richtig. Aber es hat auch nichts mit HTML zu tun. Wie bereits erwähnt ist HTML eine Dokumentenbeschreibungssprache, die keinerlei Logik zuläßt, geschweige den so etwas wie Objekte mit Eigenschaften und Methoden. Die DOM-Objekte werden erst vom Browser erzeugt und zwar anhand der Informationen die das HTML-Dokument hergiebt. DOM steht dabei für Document Object Model. Siehe HIER für eine nähere Beschreibung, was das genau ist.

xZise 16. Sep 2007 13:23

Re: Ohne Javascript Fenster öffnen
 
Ich habe mal ein bisschen gegoogelt ^^ und bin darauf gestoßen:
Testseite
Problematik z.Zt. ist leider nur, dass es auch mit JS arbeitet und ich bisher keine wirkliche Idee hatte, wie ich das Bild wechsle :(

Ghostwalker 16. Sep 2007 14:01

Re: Ohne Javascript Fenster öffnen
 
Wenn du das Bild in einem eigenen, größenangepassten Fenster anzeigen willst, kommst du um JS nicht rum. Das kannst du drehen und wenden wie du willst.

Die Frage ist, wer schaltet überhaupt Javascript aus im Browser ? Die meisten "modernen" Seiten nutzen JS sehr intensiv und können zum Großteil ohne garnicht mehr bedient/angezeigt werden.

xZise 16. Sep 2007 14:19

Re: Ohne Javascript Fenster öffnen
 
Es ging jetzt aber um die CSS-Layer-Variante, welche durchaus eine alternative wäre, wenn kein JS nötig ist.
:)

Matze 16. Sep 2007 14:26

Re: Ohne Javascript Fenster öffnen
 
Die CSS-Variante hat jedoch das Problem, dass der Screenshot generell geladen wird, auch wenn man nicht auf den Link klickt. Das Bild wird bei Link-Klick nur von unsichtbar auf sichtbar gestellt, wenn man so will.

xZise 16. Sep 2007 14:34

Re: Ohne Javascript Fenster öffnen
 
Hmm, schade :( Dann wirds wohl bei der Fenstervariante bleiben :)

Hador 16. Sep 2007 14:56

Re: Ohne Javascript Fenster öffnen
 
Zitat:

Zitat von Ghostwalker
Die Frage ist, wer schaltet überhaupt Javascript aus im Browser ? Die meisten "modernen" Seiten nutzen JS sehr intensiv und können zum Großteil ohne garnicht mehr bedient/angezeigt werden.

Ich habe es bspw. in der regel ausgeschaltet, da man damit schonmal einen Großteil der heutigen Werbung, die meistens über JS realisiert wird weg hat. Ich schalte JS wirklich nur dann an, wenn ich es umbedingt brauche, oder wenn ich häufig auf einer Seite bin und die Benutzung dieser Seite durch JS vereinfacht wird, wie es z.B. in der DP der Fall ist. Jedoch mache ich das auch nur, wenn ich mir sicher bin, dass die Seite werbefrei ist und dann auch nur für die Seite (in Opera kann man ja netterweise Seitenspezifische Einstellungen bezüglich Java, Javascript, Plugins, ... treffen)

Namenloser 16. Sep 2007 15:04

Re: Ohne Javascript Fenster öffnen
 
Zitat:

Zitat von Matze
Die CSS-Variante hat jedoch das Problem, dass der Screenshot generell geladen wird, auch wenn man nicht auf den Link klickt. Das Bild wird bei Link-Klick nur von unsichtbar auf sichtbar gestellt, wenn man so will.

Wenn man schon Javascript benutzt, kann man doch auch gleich per JavaScript im OnClick das src-Attribut des <img>-Elements setzen. Dann wird es erst beim Aufrufen geladen.

Matze 16. Sep 2007 15:49

Re: Ohne Javascript Fenster öffnen
 
Zitat:

Zitat von NamenLozer
Wenn man schon Javascript benutzt, kann man doch auch gleich per JavaScript im OnClick das src-Attribut des <img>-Elements setzen. Dann wird es erst beim Aufrufen geladen.

Fabian wollte doch genau eine Lösung ohne JS und meinte daraufhin, dass CSS eine Alternative wäre. Dann habe ich ihm den Nachteil davon genannt und gut ist. Deine Lösung wurde doch schon ganz zu Beginn angesprochen.

xZise 16. Sep 2007 15:56

Re: Ohne Javascript Fenster öffnen
 
Zitat:

Zitat von Matze
Zitat:

Zitat von NamenLozer
Wenn man schon Javascript benutzt, kann man doch auch gleich per JavaScript im OnClick das src-Attribut des <img>-Elements setzen. Dann wird es erst beim Aufrufen geladen.

Fabian wollte doch genau eine Lösung ohne JS und meinte daraufhin, dass CSS eine Alternative wäre. Dann habe ich ihm den Nachteil davon genannt und gut ist. Deine Lösung wurde doch schon ganz zu Beginn angesprochen.

ACK ;)

Ich werde das System so belassen wie es ist ;) So sind alle Zufrieden ^^ Die de JS ausschalten, und die die JS nicht ausschalten. :)

Zitat:

Zitat von Hador
[...]da man damit schonmal einen Großteil der heutigen Werbung, die meistens über JS realisiert wird weg hat.

Und in Firefox gibt es ABP ^^ und das ist gut genug, um dann JS an zu lassen :)

Thorben77 17. Sep 2007 09:25

Re: Ohne Javascript Fenster öffnen
 
Zitat:

Zitat von xZise
Ich werde das System so belassen wie es ist ;) So sind alle Zufrieden ^^ Die de JS ausschalten, und die die JS nicht ausschalten. :)

Code:
<script type="text/javascript">
  document.write("<a href=\"screenshot.php?img=qd&amp;idx=0\" onclick=\"windowOpen(this.href); return false\">Anzeigen</td>")
</script>
<noscript>
  <a href="screenshot.php?img=qd&amp;idx=0" target=_blank>Anzeigen</td>
</noscript>
Du kannst das ganze aber noch einfacher gestalten, wie ich schon am Anfang geschrieben hab:
Code:
[url="screenshot.php?img=qd&amp;idx=0"]Anzeigen[/url]
Das Script-Element, in dem du die windowOpen()-Funktion definierst solltest du übrigens außerhalb der Tabelle, am Besten in den Dokumentkopf verschieben.

Und um noch mal ein paar Erbsen zu zählen:
Zitat:

Zitat von Matze
Da xZise keinen XHTML-, sondern den HTML-Standard nutzt, kann man ja noch target="_blank" nutzen, was es in XHTML nicht mehr gibt.

Natürlich gibt es das target-Attribut sowohl in HTML als auch in XHTML, allerdings in beiden Fällen nicht in der strict-Variante (Beweis :wink: ).

Matze 17. Sep 2007 09:38

Re: Ohne Javascript Fenster öffnen
 
Zitat:

Zitat von Thorben77
Und um noch mal ein paar Erbsen zu zählen:
Zitat:

Zitat von Matze
Da xZise keinen XHTML-, sondern den HTML-Standard nutzt, kann man ja noch target="_blank" nutzen, was es in XHTML nicht mehr gibt.

Natürlich gibt es das target-Attribut sowohl in HTML als auch in XHTML, allerdings in beiden Fällen nicht in der strict-Variante (Beweis :wink: ).

Stimmt, du hast natürlich recht. Ich habe mich so an Strict gewöhnt, dass ich das ganz verdrängt habe. :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz