DonMega Geschrieben 12. September 2006 Teilen Geschrieben 12. September 2006 Hi Leute, ich hab folgendes Problem: Ich hab ne Webseite die is komplett in Perl geschrieben, mit Hilfe des CGI Moduls. Ich würde jetzt gerne von der Hauptseite aus über einen Link ein PopUp öffnen (weil es nicht größenveränderbar sein soll usw.) Ich hab da auch ne JS Funktion gefunden die das alles machen sollte, nur leider kann ich dann in dem anderen Script nicht auf die GET Variablen zugreifen. Hättet ihr da vielleicht nen Tip wie das geht? Hier mal zur Verdeutlichung ein Codebeispiel: Link aus Script 1 (das aufrufende Script) <a href="javascript:popUpChangePrize ($host\/cgi-bin\/changePrize.pl?ART=geraet&ID=$id)">$preis €</a>[/PHP] So und in Script 2 (changePrize.pl) hätte ich jetzt gerne, bzw. brauche, Zugriff auf die Variablen ART und ID, nur mit dem Popup gehts leider nit. Wenn ich das Fenster ganz normal über einen HTML Link öffne, klappt alles wunderbar. Hier ist auch mal die JS-Funktion: [PHP]function popUpChangePrize(seite) { var eigenschaft,sbreite,shoehe,fenster02; //Bildschirmauflösung ermitteln: var ns6=(!document.all && document.getElementById); var ie4=(document.all); var ns4=(document.layers); if(ns6||ns4) { sbreite = innerWidth; shoehe = innerHeight; } else if(ie4) { sbreite = document.body.clientWidth; shoehe = document.body.clientHeight; } fensterbreite=480; //fensterbreite=outerWidth; um Fenster in voller Breite zu öffnen shoehe=shoehe+100; x=(sbreite-fensterbreite); popUp=window.open(seite, "Change Prize", 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width='+fensterbreite+', height='+shoehe+', left='+x+', top=0'); }; Vielen Dank schonmal für eure Hilfe!! Greez Don Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Monty82 Geschrieben 12. September 2006 Teilen Geschrieben 12. September 2006 Wie sieht "Link aus Script 1" in der Quelltext-Anzeige des Browsers aus? Wurden die Werte der Parameter für ART und ID richtig ersetzt? Wie greifst Du innerhalb von changePrize.pl auf die Werte zu? Der Code der entsprechenden Stellen dieses Scriptes wäre hier noch interessant... Vielleicht hilft auch schon das Übergeben der URL an deine JS-Funktion mit einfachen Quotation-Marks: ('$host\/cgi-bin\/changePrize.pl?ART=geraet&ID=$id')"> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DonMega Geschrieben 13. September 2006 Autor Teilen Geschrieben 13. September 2006 Hi Monty, erstmal Danke für die Antwort! Hier sind nochmal die entsprechenden Daten ergänzt. Wie sieht "Link aus Script 1" in der Quelltext-Anzeige des Browsers aus? Also da zeigt er alles korrekt an: <a href=http://localhost/cgi-bin/changePrize.pl?ART=geraet&ID=48>56.87 €</a> Wurden die Werte der Parameter für ART und ID richtig ersetzt? Also wenn ich auf den Link klicke erscheint auch ein PopUp, nur krieg ich dann die Meldung Seite nicht gefunden und in der Adresszeile steht: javascript: popUpChangePrize('http://localhost/cgi-bin/changePrize.pl?ART=geraet&ID=32') Die Werte übermittelt er also richtig, ich weiß nicht obs an dem javascript: popUpChangePrize liegt, dass das noch in der Adresszeile mit drin steht, weil wenn ich das weg mach und nur die URL eingeb, funktioniert es. Wie greifst Du innerhalb von changePrize.pl auf die Werte zu? $art = $q->param('ART'); $id = $q->param('ID'); $q ist eine Instanz von CGI: $q = new CGI; Mit der Funktion param() kann man direkt die Werte der entsprechenden Schlüssel aus dem Query String abfragen. Ich hab ja im Link stehen: ART=geraet Mit $art = $q->param('ART') sollte dann geraet in der Variable $art stehen. Vielleicht hilft auch schon das Übergeben der URL an deine JS-Funktion mit einfachen Quotation-Marks: ('$host\/cgi-bin\/changePrize.pl?ART=geraet&ID=$id')"> Hmm das hat leider nicht geholfen, ist immer noch das gleiche Problem. Vielleicht liegt das Problem daran, dass ich bei JavaScript benutzung, nicht mit der Methode param() an die Werte komm, sondern wirklich ganz normal den Query-String über die Umgebungsvariable auswerten muss. Greez Don Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Monty82 Geschrieben 13. September 2006 Teilen Geschrieben 13. September 2006 Also da zeigt er alles korrekt an: <a href=http://localhost/cgi-bin/changePrize.pl?ART=geraet&ID=48>56.87 €</a> Wäre korrekt nicht eher das hier? <a href="javascript:popUpChangePrize('http://localhost/cgi-bin/changePrize.pl?ART=geraet&ID=48')">56.87 €</a> Vielleicht liegt das Problem daran, dass ich bei JavaScript benutzung, nicht mit der Methode param() an die Werte komm, sondern wirklich ganz normal den Query-String über die Umgebungsvariable auswerten muss. Da die Werte mittels GET in der URL übergeben werden, kommst Du da auf jeden Fall mittels param() ran... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DonMega Geschrieben 13. September 2006 Autor Teilen Geschrieben 13. September 2006 Wäre korrekt nicht eher das hier? <a href="javascript:popUpChangePrize('http://localhost/cgi-bin/changePrize.pl?ART=geraet&ID=48')">56.87 €</a> Äh ja na klar, war mein Fehler. Hatte das mit dem javascript wieder weggenommen weils dann funktioniert. Also hier nochmal korrigiert mit javascript: <a href="javascript:popUpChangePrize('http://localhost/cgi-bin/changePrize.pl?ART=geraet&ID=48')">56.87 €</a> Aber irgendwie glaube ich dass was an der JavaScript Funktion nicht stimmt. Denn wenn ich als URL http://www.google.de angeb, passiert auch nix Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Monty82 Geschrieben 13. September 2006 Teilen Geschrieben 13. September 2006 Aber irgendwie glaube ich dass was an der JavaScript Funktion nicht stimmt. Denn wenn ich als URL http://www.google.de angeb, passiert auch nix Genau das funktioniert bei mir mit deiner JS-Funktion... Also wenn ich auf den Link klicke erscheint auch ein PopUp, nur krieg ich dann die Meldung Seite nicht gefunden und in der Adresszeile steht: Also geht jetzt nicht mal mehr ein PopUp auf? Hast Du den Firefox zur Hand? Sonst schau Dir doch während des Klicks auf den Link mal die JavaScript-Konsole an (Extras, JavaScript-Konsole), ob dort Fehler auftauchen. Wie hast Du die JS-Funktion in Deine HTML-Seite eingebettet? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DonMega Geschrieben 13. September 2006 Autor Teilen Geschrieben 13. September 2006 Ok ich hab den Fehler schon etwas eingegrenzt. Anscheinend kriegt der das mit dem externen JavaScript File nicht hin. Ich hab mir mal ne kleine Testseite gebaut und wenn ich die Funktion direkt dort reinschreibe klappts. Wenn ich auf die .js Datei verweise, dann nicht. Dann kommt in der Konsole "popUpChangePrize is not defined" Aber eigentlich sollte das Einbinden doch so funktionieren oder: <script language="JAVASCRIPT" src="/javascript/functions.js" type="text/javascript"></script> In der eigentlichen "Problem Datei" (der Perl Datei) hab ich das so gemacht: $q->start_html(-title=>'Uninteressant', -author=>'Ich', -target=>'_blank', -meta=>{'copyright'=>'copyright 2006'}, -style=>{'src'=>'/styles/style.css'}, -script=>{-language=>'JAVASCRIPT', -src=>'/javascript/functions.js'}); Oder ist functions ein reserved Word :floet: ?? Greez Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Monty82 Geschrieben 13. September 2006 Teilen Geschrieben 13. September 2006 Ich vermute mal, dass... a.) ...in deiner Script-Datei noch die Java-Script-Tags vorhanden sind (<script...> ...</script>), die dort nichts zu suchen haben b.) ...der Pfad zur Java-Script-Datei falsch ist. Was kommt denn, wenn Du http://localhost/javascript/functions.js direkt im Browser aufrufst? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DonMega Geschrieben 13. September 2006 Autor Teilen Geschrieben 13. September 2006 Ok jetzt klappts bei der Test-HTML Seite auch mit externer Datei, war ein Fehler von meiner Entwicklungsumgebung, die immer auf die falsche JS Datei gespeichert hat und in der Version auf die die HTML Datei gezeigt hat, gabs die Funktion noch nicht :floet: Aber ich habe immer noch das Problem in der Perl Datei, dort zeigt er mir immer noch an dass die Funktion nicht deklariert wäre. Des is echt zum verzweifeln... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Monty82 Geschrieben 13. September 2006 Teilen Geschrieben 13. September 2006 Steht denn der Include der Java-Script-Datei im Quelltext? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DonMega Geschrieben 13. September 2006 Autor Teilen Geschrieben 13. September 2006 Jo passt alles. Aaaalso im Firefox funktionierts jetzt, nur der IE streikt und der is unser Standard Browser :cool: Ich hab den Link jetzt folgendermaßen verändert: <a href='$host\/cgi-bin\/changePrize.pl?ART=geraet&ID=$id' onclick=\"return popUpChangePrize(this)\" title='Change Price'>$preis €</a> In der JS Funktion hab ich noch ne Abfrage eingefügt, ob das PopUp offen ist, wenn nicht öffnet er den href. Im Firefox öffnet er wiegesagt das PopUp, im IE aber den href. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DonMega Geschrieben 13. September 2006 Autor Teilen Geschrieben 13. September 2006 Oh mein Gott, jetzt habs ich halt doch hinbekommen. Beim Internet Explorer darf das zweite Argument beim window.open KEIN Leerzeichen enthalten, sonst gehts nit. Also jetzt hab ich alles so wies funktionieren soll. Vielen Dank Monty für deine Hilfe und Ausdauer Für die die es interessiert hier nochmal die Codesachen: JavaScript function popUpChangePrize(seite) { var padding; (navigator.appName == "Microsoft Internet Explorer") ? (padding = 10) : (padding = 0); var screenw = screen.availWidth; var screenh = screen.availHeight; var winw = (800 + 15 + padding); var winh = (400 + 15 + padding); var posx = (screenw / 2) - (winw / 2); var posy = (screenh / 2) - (winh / 2); popUp=window.open(seite, "ChangePrize", 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, top='+posy+', width='+winw+', height='+winh+', left='+posx+', resizable=no'); if (popUp) { return false; } else { return true; } }; Link in Script 1 <a href='$host\/cgi-bin\/changePrize.pl?ART=geraet&ID=$id' onclick=\"return popUpChangePrize(this)\" title='Change Price'>$preis €</a> Übernahme der GET Variablen in Script 2 $art = $q->param('ART'); $id = $q->param('ID'); So das wars dann. Greez Don Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.