Archivlink: javarea.de Forum > JavaScript > Auswahl ob neues Fenster oder nicht?
Vollständigen Link anzeigen: javarea.de Forum > JavaScript > Auswahl ob neues Fenster oder nicht?

Pages: [1]

geschrieben von Micro am 28.05.2005 - 13:53
Mahlzeit Leuts ;o)

Ich hab nicht wirklich etwas gefunden, daher die Frage einfach mal hier, zumal ich mich mit Javascript fürchterbar schwer tue ...

Ich hab eine Suche auf meiner Webseite die ich etwas umbauen muss. Die Suchergebnisse aus der eigenen Webseite sollen auch auf der eigentlichen Webseite angezeigt werden.

Soll beispielsweise in der Wikipedia weitergesucht werden, dann soll man ein Häckchen setzen, Formbutton drücken und ein neues Fenster soll aufgehen. Aber eben nur wenn das Häckchen gesetzt ist.

Problem an der Sache, ich könnte der Form erzählen, das es per target blank gleich ein neues Fenster aufmachen soll. Ist nur etwas umständlich wenn man viel suchen will. Zumal es dann ja immer aufginge, auch wenn nur auf der eigenen Seite gesucht würde.


Welche Methode am Ende genutzt werden kann oder sollte ist mir an sich egal. Da die Suche eh gerade völlig neu programmiert wird, kann ich bauen was ich will. Es würde auch anders gehen, redirect und per Script ein neues Fenster, wenn die erste Seite so bleiben würde wie sie derzeit ist.


Hat irgendwer ne Idee?

Danke

Mirko


Das hier wäre die Suche:
http://guggemahier.de/mmc.xhtml?name=XSearch


geschrieben von Hawk am 29.05.2005 - 10:10
Hallo Mirco,

Hier eine Anregung :

<script language="JavaScript">
<!--
function pruefe() {
if(document.forms[0].elements[0].checked == true){
Fenster=window.open( "bildwechsel.htm","Zweitfenster","width=500 , height=400");
}
else {
return false ;
}}
//-->
</script>
<body>
<form action="" method="" target="">
<input type="Checkbox" name="" value="v"><input type="Button" value="Suche" onclick="pruefe()">
</form>


Wenn die Checkbox gesetzt ist wird die Anweisung ausgeführt, sonst abgebrochen.

geschrieben von Micro am 29.05.2005 - 18:43
Hallo Hawk

Danke für die Idee ...


Ich hab Deine Anregung mal verwendet.


function pruefe(path) {
if(document.forms[0].elements[0].checked == true){
Fenster=window.open( path, "Zweitfenster");
}
else {
return false ;
}}


Das funktioniert soweit auch ganz gut.

Nun möchte ich aber nicht jede Checkbox ein neues Fenster öffnen lassen. Mein Denkfehler beschränkt sich wohl nun auf die Werte die da das [0] haben.

Die Checkbox hat ne ID sowie einen Namen, der per POST übergeben wird. "newfe" hab ich das Ding mal getauft.

function pruefe(fm,path), entsprechender Aufruf, im Debugger kommen die enthaltenen Daten auch an.
fm = newfe
path = die URL

Ersetze ich nun forms[0] durch die Variable forms[fm], meint der Debugger:
document.forms[fm] has no properties. Bis elements kommt der dann gar nicht mehr. Wo ist mein Denkfehler?!


Zweite Frage, das neue Fenster funktioniert, so weit, so gut. Das Ursprungsfenster versucht aber seinerseits den Post zu verarbeiten. Was müsste ich tun um nach Druck auf "absenden", nur das neue Fenster etwas tun zu lassen, also zur entsprechenden URL zu gehen, das alte aber macht nix?

Mirko

geschrieben von Micro am 29.05.2005 - 19:08
Sonntag .. ich glaub da sollt ich nix machen ;o)
Noch nen Denkfehler ....

geschrieben von Hawk am 29.05.2005 - 20:35
Hallo Mirco,

forms[0] bedeutet das erste Formular auf der Seite das mußt Du durch den Namen des Formulars ersetzen den Du es gegeben hast, das gleiche bei Elements. also

function pruefe(path) {
if(document.Formular.newfe.checked == true){
Fenster=window.open( path, "Zweitfenster");
}
else {
return false ;
}}

<form action="" method="" target="" name="Formular">

also was rot ist mußt Du Dir anschauen

geschrieben von Micro am 30.05.2005 - 16:14
Hallo Hawk


Eigentlich ja einfach ... ;o)
Aber irgendwie nicht so richtig.



Alternativen zeigen? <input type="checkbox" name="alt" value="1" /><br />
Im neuen Fenster öffnen? <input type="checkbox" name="newfe" value="1" id="newfe" /><br />
<!-- Dynamisch erzeugte Zeilen, die in ihrer Anzahl variabel sind -->
<input type="radio" value="wiki" name="type" checked="checked" /> Wikipedia<br />
<input type="radio" value="xfprint" name="type" /> XFsearch (TestKlasse)<br />
<input type="radio" value="xprint" name="type" /> Suche in den News<br />


<input type="submit" value="Abschicken" name="send" onclick="pruefe()" />



Wenn ich Deinem Code-Beispiel nun folge sollte doch eigentlich der Inahlt der Variable "type" so ausgelesen werden können, oder?



function pruefe() {
if(document.XSearch.newfe.checked == true){
Fenster=window.open(gugg(),"Zweitfenster");
}else {
return false ;
}
}

function gugg(){
return document.XSearch.type.value;
}


Aus gugg() bringt er mir ein "undefined" zurück, bricht aber im Debugger nicht ab.


Wobei mir hier noch viel lieber wäre wenn ich eine oder mehrere Variablen, die per POST übergeben werden, lesen könnte.

Denn die Auswahlfelder sind wie oben bezeichnet zum einen in loser dynamischer Reihenfolge und Anzahl erhältlich und zum anderen gibt es mehrere Variablen die dynamisch an die neue URL gesendet werden müssten.

Mirko

*seufz*
Irgendwann versteh ich das auch mal .....

geschrieben von Hawk am 30.05.2005 - 18:13
Hallo Mirco,

Wenn du die Radiobutton auslesen willst geht das so:

var adresse="";
if(document.forms[0].type[0].checked)adresse="Wikipedia";
if(document.forms[0].type[1].checked)adresse="XFsearch (TestKlasse)";
if(document.forms[0].type[2].checked)adresse="Suche in den News";

Was Du als Variable übergeben willst ist ja denn Deine Angelegenheit.

geschrieben von René am 30.05.2005 - 19:52
Das "type" ist in JavaScript reseviert.


Probier mal:
HTML-Quelltext
1: 
alert(document.forms[xxx].elements[yyy].type);


eventuell auch so:
HTML-Quelltext
1: 
document.forms[0].elements['type'][0].checked

geschrieben von Micro am 30.05.2005 - 23:04
Hi Hawk

Sowas dacht ich mir. Undefinierte Variable. Damit funktioniert es ... fast ...

@Rene, danke Dir.
So bekomm ich endlich mal die Werte ins Script. Ich hab die Variable type umbenannt. Ich ahnte sowas in der Art (reservierte Variable) schon ;o)

alert(document.XSearch.elements['typurl'][0].value);

Mich stört jetzt nur noch die [0] ......


Die Anzahl der Radiofelder ist unterschiedlich und X-beliebig in seiner Menge. Je nach Installationszustand eben.

OK, ich könnte dem PHP-Script nun erzählen, das es mir den Java-Code auch in dynamischer (Zeilen-) Anzahl schreiben soll. Dann müsst ich den Code mit ins HTML schreiben, was eigentlich kein Problem wäre. Aktuell liegen solche JavaScripte immer in einer eigenen Datei, die geladen wird.
Nur, gibt es auch eine solche, elegantere, Lösung?

Auslesen $_POST["typurl"] ... beispielsweise?!

Mirko

geschrieben von René am 31.05.2005 - 09:43
Hilft dir das weiter?

HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
var anz = document.XSearch.elements['typurl'].length;

alert(anz);

for (...; ... < anz; ...)
{
	...
}

geschrieben von Micro am 31.05.2005 - 10:06
Hi René

*freu*
Und wie mir das weiterhilft ;o)
Es funktioniert jetzt zumindest schon mal ein wenig so wie ich das möchte.
Jetzt gehts nur noch um das Zusammensetzen mehrerer Variablen.

Ich werd das Ergebnis bei Gelegenheit hier mal posten. Zumal die Suchklasse sicher auch bei einigen Webentwicklern auf Interesse stoßen könnte ;o)

Danke.


Hier das Ergebnis:
HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
function pruefe() {
var anz = document.XSearch.elements['typurl'].length;
   if(document.XSearch.newfe.checked == true){
      for (i=0;i<anz;i++){
         if(document.XSearch.elements['typurl'][i].checked == true){
            Fenster=window.open(document.XSearch.elements['typurl'][i].value,"Zweitfenster");
         }
      }
   }else {
       return false ;
   }
}





Powered by: JBB v.2.0.4 Copyright ©2000-2006, www.javarea.de.