Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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')">

Geschrieben

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

Geschrieben

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...

Geschrieben
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 :(

Geschrieben

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?

Geschrieben

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

Geschrieben

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...

Geschrieben

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.

Geschrieben

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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...