Toolbar, Menubar und andere Leisten ausblenden mit Variablen-Übergabe

Jerinca

Erfahrenes Mitglied
Hallo!

Ich kenne eine JavaScript-Möglichkeit, im folgenden Fenster die Statusleiste, Adressleiste usw. auszublenden.

Das sieht ungefähr so aus und klappt auch:

window.open('eine_site.asp', '_blank', 'toolbar=no,location=yes,directories=no,status=no,menubar=no,resizable=no,dependent=yes');

Das Problem dabei ist, daß ich nicht nur einfach ein neues Fenster öffnen will, sondern es soll auch eine Variable vom vorherigen verarbeitet werden. Das macht man ja normalerweise mit einem submit(), aber dann kann ich die Eigenschaften des neuen Fensters nicht mehr so schön bestimmen!

Ich habe es auch schon über target versucht, leider ohne Erfolg :(

document.form1.target='eine_site.asp', '_blank', 'toolbar=no,location=yes,directories=no,status=no,menubar=no,resizable=no,dependent=yes';

Ich habe auch gehofft, daß ich mit CSS weiterkomme, denn z.B. die Scrollbar kann man ja leicht so ausblenden:

<body style="overflow:hidden;">

Ich habe auch schon versucht, über einen Link in das neue Fenster zu kommen:

<A HREF="javascript:eek:pen('eine_site.asp?id= <%= + Request("id") %>', '_blank', 'toolbar=no,location=yes,directories=no,status=no,menubar=no,resizable=no,dependent=yes')">Link</A>

Aber leider ist die Variable abhängig davon, was in einem Menü ausgewählt wurde und mit einem Request, wie ich das sonst oft mache, komme ich hier nicht weiter, weil sich das Menü ja auf der gleichen Site befindet wie das Request :rolleyes:

Wie kann ich denn nur in einem neuen Fenster, das ich über ein submit() aufrufe, auch die Leisten ausblenden? Oder anders: Wie kann ich die Leisten in einem Fenster ausblenden, dem gleichzeitig auch eine Variable übergeben werden soll

Das muß doch irgendwie gehen außer mit dem "dummen" window.open() :mad:
 
Hy,

das ganze ist grundsätzlich über window.open() gut lösbar.
Mit CSS kommst du nicht weit, weil du da auf der geladenen Seite selbst maximal nachträglich noch die Scrollbars wegpfuschen kannst, die sonstigen Fenstereigenschaften kannst du im Nachhinein nicht mehr beeinflussen, wie du ja schon festgestellt hast.

Was du suchst, ist das Einfügen dynamisch generierter Variablen in einen Methodenaufruf, wobei du die Variable quasi "ausklammern" musst, damit sie auch als solche von der JS-Engine noch dynamisch erzeugt werden kann:
Code:
window.open("eine_site.asp?uebergebeneVariable=" + ausgeleseneVariable, "_blank", "toolbar=no,location=yes,directories=no,status=no,menubar=no,resizable=no,dependent=yes");
Gruß,
Adam
 
Hallo Adam!

Danke schonmal für Deine Zeit, aber ich krieg eben das mit der Variable nicht so ganz hin :(

Was Du geschrieben hast
window.open("eine_site.asp?uebergebeneVariable=" + ausgeleseneVariable,
"_blank", "toolbar=no,location=yes,directories=no,status=no,menubar=no,
resizable=no,dependent=yes");
ist ja eigentlich im Grunde ähnlich, wie der letzte Ansatz von mir:
<A HREF="javascript:eek:pen('eine_site.asp?id= <%= + Request("id") %>',
'_blank', 'toolbar=no,location=yes,directories=no,status=no,menubar=no,
resizable=no,dependent=yes')">Link</A>
Da habe ich ja schon geschrieben, daß ich eben gerade nicht weiß, wie ich die Variable weitergeben soll, weil es mit einem Request nicht klappt und auch mit document.form1.id.value geht es nicht.

Wenn Du mir also noch sagen könntest, wie ich an die - wie Du es genannt hast - ausgeleseneVariable drankomme bzw. wie ich sie in den URL-String reinkriege, wäre das ganz klasse :p

Beziehungsweise: Dein letzter Satz ist mir nicht ganz klar:
Was du suchst, ist das Einfügen dynamisch generierter Variablen in einen Methodenaufruf, wobei du die Variable quasi "ausklammern" musst, damit sie auch als solche von der JS-Engine noch dynamisch erzeugt werden kann.
 
Zuletzt bearbeitet:
Jau, unsere beiden Aufrufe sind ähnlich, stimmt.

Ich habe wohl nicht ganz verstanden, was du unter einem "Request" verstehst. der nicht klappen soll - wird aber wohl irgendwas ASP-mäßiges sein.
Funktionieren müsste das aber eigentlich so, wenn über die Datei vorher ein ASP-Parser läuft.
Der Unterschied zwischen unseren beiden Varianten ist lediglich, dass du serverseitig (ASP) die Variable schon einfügen willst, ich jedoch clienstseitig (JavaScript) die Variable einfügen möchte.
Jetzt stellt sich die Frage:
Wenn du wirklich möchtest, dass das Öffnen des neuen Fensters von clientseitigen Einträgen in einem Formular abhängt, welcher der beiden Wege erscheint dann günstiger?

Ich tendiere zum JavaScript
Sobald du mal so eine grobe Gliederung deines Formulares oder Quelltextes hier angeben kannst, kann man dir sicher weiterhelfen.
Der Gedanke deines geposteten "document.form1.id.value" ist jedenfalls nicht falsch, so muss es unter korrekten Bedingungen jedenfalls funktionieren. :)

Wie du die Variable dann in den URL-String reinbekommst, scheinst du ja nun zu wissen, bzw. da warst du schon vorher auf dem richtigen Dampfer - da hatte ich aber das eigentliche Problem vermutet, nicht in der Evaluierung des Stringteiles der Variable.
Aber das holen wir jetzt nach, versprochen. ;)
 
Hi Adam!

Vielen Dank, solche Versprechungen hört man gerne :p

Also, die Lage ist so: Die Seite steht schon und es läuft auch. Nach Auswählen aus einem Dropdown-Menü und Klicken auf den OK-Button öffnet sich eine neue Seite. Nur gefällt mir jetzt eben nicht, daß diese Seite alle Leisten hat.

Dazu muß man sagen: Die Website dient einer Datenbankverwaltung und soll vielen Anwendern zugänglich sein (im Intranet einer Firma). Nun möchte ich einfach Fehlerquellen ausschalten, weil man ja immer vom doofsten User ausgehen muß :rolleyes:

Ich zeig' Dir mal einige Ausschnitte, wie's bis dato läuft:
Code:
    <select name="id">
      <%		
while (!abfrage.EOF) // solange Datensätze vorhanden sind
{
%>
      <option value="<%=(abfrage.Fields.Item("MN_ID").Value)%>" ><%=(abfrage.Fields.Item("MN_ModellName").Value)%></option>
      <%
  abfrage.MoveNext();
}
if (abfrage.CursorType > 0) {
  if (!abfrage.BOF) abfrage.MoveFirst();
  } 
else {
  abfrage.Requery();
} // Ende der Auflistung im Dropdown-Menü
%>
    </select>
	<input type="button" name="OK" value="OK" onClick="oeffnen()">
Also, das Unterstrichene gehört zum HTML-Teil der Selectbox, das Fette ist eine von Dreamweaver genierte While-Schleife zum Auflsiten aller zutrefenden DB-Einträge aus einer Abfrage (Recordset). Und ganz unten das Kursive ist der Button, der die folgende Funktion auslöst:
Code:
<script language="javascript">
	function oeffnen()
	{	
	document.form1.target='neue_site.asp';
	document.form1.submit();
	return false;
	}
</script>
Wie Du siehst, wird hier gar keine Variable übergeben. Aber auf der nächsten Seite, die dann aufgerufen wird, steht im Recordset eine Variable, deren Wert "Request("id")" heißt. Dadurch wird der Wert vom Feld mit dem Namen "id" abgefragt, das sich auf der vorherigen Seite befindet (sonst Fehlermeldung - klar). Und das klappt so wunderbar :p

Problem: Ohne ein submit() auf der vorherigen Seite ist kein Request auf der nächsten Seite möglich! Deswegen brauche ich entweder

a) ein submit() auf der ersten Seite => ein Link bzw. einfaches window.open() is' nicht drin

oder b) eine Möglichkeit, die Variable über die URL weiterzugeben => dann klappt's auch mit dem Nachbarn... ähhh... mit der Variable ;-]

Ich hoffe, ich stehe nur auf dem Schlauch und die Lösung ist ganz einfach ;)
 
Na dann versuchen wir's mal. :)

Den Wert des Eintrages, den der User im Dropdown-Menü auswählt, kannst du per JavaScript wie folgt auslesen:
Code:
auswahl = document.formularname.selectname.options[document.formularname.selectname.selectedIndex]
Formularname und Auswahlfeldname angepasst und schon sollte die Variable "auswahl" eigentlich deinem Wunsch entsprechen.

Übergeben wird das dann ganz einfach mit der URL, wie du schon sagtest:
Code:
<script type="text/javascript" language="JavaScript">
	function oeffnen() {	
		window.open("neue_site.asp?meineVariable=" + auswahl, "_blank", "toolbar=no,location=yes,directories=no,status=no,menubar=no,resizable=no,dependent=yes");
		return false;
	}
</script>
(wofür eigentlich das return false in diesem Falle? *grübel*)

Gruß,
Adam
 
Hi Adam!

Du bist echt super! Es hat geklappt! Aber wie ich schon vermutet hatte: Ich hab' auch ein wenig auf dem Schlauch gestanden, denn auf einer anderen ASP-Site meiner Website habe ich sowas in der Art auch schon mal gemacht :rolleyes:

Ach ja, aber dadurch, daß ich noch ein alert reingebaut habe, ist mir noch ein Fehler aufgefallen bei Deinem Script: Mit
Code:
var auswahl = document.form1.id.options[document.formularname.selectname.selectedIndex];
alert(auswahl);
habe ich immer nur [objekt] angezeigt bekommen und die Weiterleitung hat dann auch nicht geklappt.

Ich habe nun
Code:
var auswahl = document.form1.id.options.value;
alert(auswahl);
geschrieben und das klappt!

Also, vielen vielen Dank für Deine Zeit und Mühe (!)

Hast mir wirklich geholfen :D

Grüße, Jerinca
 
Hoppala...ich bin wohl schon etwas aus der JavaScript-Übung, da muss ich dann wohl was durcheinandergeworfen haben.
Naja, ist ja noch gut ausgegangen, freut mich. :)

have a nice day,
Adam
 
Noch was vergessen (falls es Dich noch interessiert):

Das return false habe ich deswegen drin, weil ich ja mehrere Buttons habe, die eine Submit-Funktion enthalten.

mit return false soll nur sichergestellt werden, daß nach Betätigen eines dieser buttons das Formular/die Site wieder "frisch" und wertemäßig unbelastet ist :)

Grüßle, Jerinca
 
Hm - die submit-Methode führt doch aber zu gar keinem Rückgabewert, wieso sollte dieser dann noch gecancelt werden?

verwirrt,
Adam
 

Neue Beiträge

Zurück