Prototype Window: Confirm soll Aufruf der Seite verhindern...

Mondmann

Mondmann

Aktives Mitglied
Thread Starter
Dabei seit
21.07.2004
Beiträge
3.246
Reaktionspunkte
183
Hallole
Kennt sich hier wer mitPrototype Window aus?

Sollte mal entwas Hilfe haben.

Und zwar habe ich einen Link,der auf eine Webseite führt.
Wie beim "normalen Javascript " soll der User beim KLick auf den Link erst gefragt werden ob er das tatsächlich möchte.
Da mache ich eine Alertbox und werte den Ja,- oder Nein Klick aus.
Die Alertbox hält so lange den Aufruf der Webseite auf!

Genau das möchte ich mit Prototype Window machen mit dem Confirm Dialog
Das geht Prinzipiell, nur hält der Confirm Dialog deN Aufruf der Seite nicht auf.

Der Klick wird also ausgeführt, die Seite wird aufgerufen und dann erst erscheint die Confirm Box.

Totaler Schwachsinn wenn Ihr mich fragt,aber warscheinlich check ich das nicht.
Ich hoffe es zumindest.

Hier ein Beispiel:

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
	"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" version="-//W3C//DTD XHTML 1.1//EN" xml:lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
	<script type="text/javascript" src="../javascripts/prototype.js"> </script>
	<script type="text/javascript" src="../javascripts/effects.js"> </script>
	<script type="text/javascript" src="../javascripts/window.js"> </script>
	<script type="text/javascript" src="../javascripts/debug.js"> </script>
	<link href="../themes/default.css" rel="stylesheet" type="text/css"/>
	<link href="../themes/alert.css" rel="stylesheet" type="text/css"/>
	<link href="../themes/alphacube.css" rel="stylesheet" type="text/css"/>

	<title>dialog</title>

<script type="text/javascript">

  function openConfirm() {
    Dialog.confirm("Wirklich aufrufen???",
                   {top: 10, width:250, className: "alphacube", okLabel: "Yes", cancelLabel:"No"})


  }


  }
</script>

</head>


<body>



<br/>
<br/>
<br/>
<br/>

<a href="https://www.macuser.de" onclick="openConfirm()">Seite aufrufen</a><br/>





</body>
</html>

Wenn ich also auf den Link "Seite aufrufen" Klicke wird die Seite sofort aufgerufen.
Dann aber hat der Conrifm Dialog gar keine Chance mehr aufzutauchen, da die neue Seite ja schon geladen ist.
MAche ich retuen:false; dann wird verhindert daß die Seite aufgerufen wird,aber dann kann ich sie nicht mehr aufruden.

Also entweder ist das von Grund auf hohl oder ich bin das.
Mit ner Alertbox ist das 100mal einfacher,abe mit Prototype Window siehts klasse aus.

ALso kann mir wer helfen?

Danke Mondmann
 
Wenn Du jetzt mal nur auf die Programmlogik schaust, sehe ich nach Ja oder Nein nix. Mit alert() wird das auch nicht funktionieren.
Entweder die URL an die Funktion übergeben und nach Ja aufrufen.

Oder so:

<html>
<head>
<script language="javascript" type="text/javascript">
function openConfirm(){
return (confirm("Wirklich???"));
};
</script>
</head>
<body>
<a href="https://www.macuser.de" onclick="return(openConfirm())">Seite aufrufen</a>
</body>
</html>

Und noch return (confirm ... mit Deinem Dialog.confirm ersetzen.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: incal
Es geht eben um den Zusammenhang mit Prototyp Window.
Mit Alert wird das sehr wohl funktionieren, da alert das Gesamte Programm unterbricht und eine Eingabe erzwingt.
Will damit sagen, ich kann am Browser nichts mehr anklicken ,bis ich ja oder nein angeklickt habe.
Das habe ich bisher erfolgreich eingesetzt.

Nun möchte ich das alles eben mit Prototyp Window machen.
Wies scheint geht das aber nicht, da PR(Prototyp Window) auch nur ein Fenster erzeugt.
Das oben ist ja auch nur ein Beispiel.
Kennt sich denn niemand mit PR so richtig gut aus?

Mondmann
 
leider nein...
viel Erfolg
incal
 
Häh, Du musst das doch nur noch bei Dir einsetzen.

Und wie willst Du mit Alert Ja oder Nein abfragen?

Das oben ist ja auch nur ein Beispiel.

Lieber Mann im Mond, es ist ein Beispiel nur für Dich.
Du musst nur noch confirm durch Dialog.confirm ersetzen.
 
ja ich weiß ich hab das verwechselt... ich meinte natürlich nicht alert, sondern confirm... aber mit Dialog.confirm ist es dasselbe.
 
Also hier nochmal eine ganz ausführliche Erklärung, hoffe das ist besser ausgedrückt...:

Bei einem Projekt habe ich mehrere Links, bei denen erst nachgefragt werden soll, ob der User das auch wirklich will.
Heist also, ist habe zb. einen Link zu einer Seite, bei Klick wird mit dem Eventhandler "onclick" einen Conrifm Abfrage gestartet.
KLickt der User auf "Cancel" wird der Link nicht aufgerufen, klickt der USer auf "Ok" wird der Link aufgerufen.
Während die Confirm Abfrage da ist, kann ich im Browser nichts anderes machen, bis ich auf die Confirm Box reagiere.
Das ist gut so und auch gewollt.

Jetzt möchte ich das Ganze (und mehr)mit Prototype Window machen, genau dasselbe, nur siehts dann halt schöner aus.
Mein Problem hierbei ist, daß das Laden der Seite nicht aufgehalten wird!
Ich klicke auf den Link, die Seite wird geladen und erst dann kommt der Confirm Dialog.
Daß das nicht im Sinne des Erfinders ist, ist klar, denn ich will das Laden der Seite (wie beim normalen Confirmdialog) unterbrechen, bis der User auf etwas reagiert hat.

Nun frage ich mich wie das mit Prototype Window geht und hoffe, daß mir hier der eine oder andere helfen kann.

Hier mal etwas Quellcode.
Erstmal der Code der normalen Confirm Abfrage. So wie es hier funktioniert sollte es mit Prototype Window auch gehen:



Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Confirm Test</title>

</head>
<body>

<a href="https://www.macuser.de" onclick="return(confirm('Wirklich zum Forum wechseln?'))">Aufruf</a>

</body>
</html>


Ich klicke also auf "Aufruf" und der Confirm Dialog erscheint,währenddessen wird das LAden der Seite unterbrochen.

Hier nun etwas Code den ich aus den Prototype Beispiel habe:



Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" version="-//W3C//DTD XHTML 1.1//EN" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script type="text/javascript" src="../javascripts/prototype.js"> </script>
<script type="text/javascript" src="../javascripts/effects.js"> </script>
<script type="text/javascript" src="../javascripts/window.js"> </script>
<script type="text/javascript" src="../javascripts/debug.js"> </script>

<link href="../themes/default.css" rel="stylesheet" type="text/css"/>
<link href="../themes/alert.css" rel="stylesheet" type="text/css"/>
<link href="../themes/alphacube.css" rel="stylesheet" type="text/css"/>

<title>dialog</title>


<script type="text/javascript">


function openConfirm() {
Dialog.confirm("Abfrage. Wirklich aufrufen?",
{top: 10, width:250, className: "alphacube", okLabel: "Yes", cancelLabel:"No"})

}

</script>

</head>
<body>

<a href="http://www.spotlight.de" onclick="openConfirm()">Aufruf</a><br/>

</body>
</html>



Also hier wird nun die Seite aufgerufen, dann erst der Confirm dialog.
Sieht schön aus, darum mache ich das ja auch,aber ich will verhindern, daß während der Abfrage die Seite aufgerufen wird und der User entscheiden muss, ob oder ob nicht.

Geht das mit Prototype überhaupt oder bin hiermit völlig falsch?

Grüße Mondmann
 
So, hab's. :D
War halt vorher auf der falschen Fährte, weil Du nicht alle Optionen angegeben hast
und ich mir Prototype nicht geladen hatte.

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" version="-//W3C//DTD XHTML 1.1//EN" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script type="text/javascript" src="../javascripts/prototype.js"> </script>
<script type="text/javascript" src="../javascripts/effects.js"> </script>
<script type="text/javascript" src="../javascripts/window.js"> </script>
<script type="text/javascript" src="../javascripts/debug.js"> </script>

<link href="../themes/default.css" rel="stylesheet" type="text/css"/>
<link href="../themes/alert.css" rel="stylesheet" type="text/css"/>
<link href="../themes/alphacube.css" rel="stylesheet" type="text/css"/>

<title>dialog</title>

<script language="javascript" type="text/javascript">
function openConfirm(myURI) {
  Dialog.confirm("Abfrage. "+myURI+" wirklich aufrufen?",
 {top: 10,
  width:250,
  className: "alphacube",
  ok:function(win) {location.href=myURI; return true;}
 });
}

</script>
</head>
<body>
<a href="#" onclick="openConfirm('http://www.spotlight.de'); return false;">Aufruf</a><br/>
</body>
</html>
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: UDH5
Hallo Olivetti und vielen Dank.
Ja so gehts.

Also erst verhinderst du das LAden mit
CODE]return false[/CODE], dann lädst du die Seite quasi erneut, wenn ok geklickt wird.
Was ist nicht verstehe ist das hier:

Code:
ok:function(win) {location.href=myURI; return true;}

Woher weist du, daß du "ok" angeben musst? In der DOku steht "onOk".

So, Dann haben wir die nächste Schwierigkeitsstufe.

Ich möchte das Ganze von einer dynamischen Webseite machen(ISAPI DLL, sowas ähnliches wie ASP oder so) .

D.h. ich habe ein Formular, dessen Daten ich per POST an die DLL schicken möchte (muss).
Also hier ein Codebeispiel:

<form name="Login" action="meinedynamischeseite.dll" method="POST">

Name: <input name="Name" />
Passwort: <input name="Passwort" />
Sonstwas: <input name="sonstiges" />

<input type="submit" name="" value="Senden" onclick="openConfirm('meinedynamischeseite.dll'); return false;"> />
</form>

Das wird so nicht funktionieren, oder?
Weil ich ja die Formulardaten nicht direkt vom Formular aus an die DLL schicke, sondern in der Funktion extra aufrufe---ohne Formulardaten.

Werds gleich mal testen...

Vielen herzlichen Dank für Deine Hilfe...
 
Ja es ist so wie ichs mir gedacht habe.
Die Formulardaten werden nicht mitgeliefert...
Hmmm...
Da müsste ich der Funktion gerade alle Formular values übergeben, oder?
Das ist bei einem größeren Formular wie ich sie hier manchmal habe natürlich sehr umständlich.Und ohne Javascript geht dann eben gar nichts mehr.
Hm..mal sehen...es geht ja eigentlich nur drum, das Laden der Seite incl. Formulardaten zu unterbrechen, wie beim normalen Confirm.
Schätze mal das geht wohl nicht.... mit Prototype
 
Zuletzt bearbeitet:
Ja es ist so wie ichs mir gedacht habe.
Die Formulardaten werden nicht mitgeliefert...
Hmmm...

Bau Dir die Daten doch mit JavaScript zusammen und schicke sie via HTTP-Request an das Formular.
Kannst ja in einer Schleife einfach das Formular Feld für Feld durchlaufen und daraus dann die Post-Sachen von Hand zusammenbauen.
Wär jetzt mein Ansatz (ich geh mal davon aus, dass die Auswertung des Formulars in einem PopUp erfolgen soll, ansonsten verstehe ich nämlich den Sinn der JS-Funktion nicht)

mfg
Lukas
 
Hallo Olivetti,

Eingängiges Beispiel, hatte bislang noch nichts mit Prototype Windows zu tun; aber wieder was gelernt.
Da PWs ein Javascript-Only-Effekt sind, fänds ichs aber ein bisschen schade, wenn man ohne Javascript dem verheißungsvollen "Aufruf" nicht fogen kann. :D
Code:
<a href="http://www.spotlight.de" onclick="openConfirm(this.href); return false;">Aufruf</a>
Gruß UDH5
 
Also erst verhinderst du das LAden mit
CODE]return false[/CODE], dann lädst du die Seite quasi erneut, wenn ok geklickt wird.

Nein. Die aufgerufene Funktion hat einen Rückgabewert, den will ich aber im Dokument nicht haben. Das "return false" zwingt den Aufruf auf false.
Was in der Funktion passiert hat damit nichts zu tun.
Klingt vielleicht etwas holprig, aber mehr kann man darüber sicher in
Selfhtml nachlesen.

Woher weist du, daß du "ok" angeben musst? In der DOku steht "onOk".

Ich schaue immer mit einem Auge in die Doku und mit dem anderen in die Samples.
Am Schluß ist dann irgendein Eindruck bleibender und wird verwendet. ;)

Weil ich ja die Formulardaten nicht direkt vom Formular aus an die DLL schicke, sondern in der Funktion extra aufrufe---ohne Formulardaten.

Du musst die Daten ja nur richtig an die DLL hängen.
 
Code:
<a href="http://www.spotlight.de" onclick="openConfirm(this.href); return false;">Aufruf</a>
Gruß UDH5

Hast natürlich recht. So ist es richtig.
Es war Gestern schon sehr spät und da habe ich mich wohl nicht mehr bemüht. :)
 
Klingt vielleicht etwas holprig, aber mehr kann man darüber sicher in
Selfhtml nachlesen.

Alles klar, werd ich mal gucken...

Du musst die Daten ja nur richtig an die DLL hängen.
ja wie denn?
Sonst habe ich das ja immer direkt übers Formular gemacht, da ich aber die DLL nun im Script aufrufe habe ich die Daten nicht mehr...???
 
Hallo Mondmann,

soviel ich verstanden habe, möchtest du den Passwort-Dialog mit PW abhandeln, damits schöner aussieht. warum baust du nicht einfacht ein entsprechendes PW? Also: <a href="...link..">login</a> -> (Javascript) ? <javascript>---PW-Formular---</script> : <noscript>---Formular---</noscript>
 
Jain. Passwort Dialog wäre noch das einfachere.
Es geht auch drum, daß ich verschiedene Formulare habe. Diese senden einen ganz bestimmten POST String den ich in der DLL auswerte und dementsprechend eine dynamische Seite anzeige.

Mit dem o.g. Beispiel gehen meine POST Daten verloren, da ich die Seite nicht über das Formular und somit mit den Post Daten aufrufe, sondern über PW, welches aber dann die Daten nicht beinhaltet, da es ein einfacher Aufruf ist, ohne POST Daten...
 
Ich glaube da liegt ein Denkfehler vor, im kompletten PW-Formular würden die Daten ja erst eingegeben und dann zur Auswertung über POST gesendet - also ein Vorgang, der, wie beschrieben, alternativ genauso ohne Javascript erfolgen könnte - eigentlich nur ein Dublikat in unterschiedlichem Look.
 
H.. glaub ich nicht...das Formular das ich meine wir dynamisch generiert. D.h. es wird nichts ausgefüllt,sondern vorbelegt.
Das Ganze dient als Menu. Ich habe 10 buttons innerhalb eines Formulars und je nachdem was geklickt wurde, kann ich die entsprechende Seite anzeigen und zwar dadurch daß ich die Postdaten auswerte.

Ich kann also nichts ausfüllen. Darum ist es mir auch so wichtig, daß die Daten direkt und nicht übers Script abgeschickt werden...
Aber ich schätze das geht so nicht und ich muss bei der normalen Confirm Box bleiben...
 
Dynamisch generiert? Meinst du, nach Datenbankabfrage? Dann sags vielleicht nochmal deutlicher. Der Link kann nur über Auswertung des Formulars weitergeleitet werden, das eigentlich über POST gesendet werden soll, aber vom PW abgefangen wird?

Mit Ajax bzw. dem XMLHttpRequest-Objekt könntest du doch nötigenfalls (z.B. User-Passwort) eine Formularauswertung via Datenbankabfrage über Javascript machen, du müsstest nur die geeigente php-(oder sonstige dynamische) Datei ansprechen, die dir die Rückgabewerte liefern kann. Im weitesten Sinne habe ich koli.bris einleuchtenden Vorschlag jedenfalls so verstanden.
 
Zurück
Oben Unten