Perl-Script ruft anderes Script auf mit internem Link
Lars Witter
- perl
Hallo,
hoffe ich bin hier richtig.
Also, ich habe ein Script, das gibt eine HTML-Seite aus, in der ein Haufen zeilenweiser Einträge sind, jeder mit einem <a href="" name="bla1..n">.
und ich habe nun zu jedem dieser einträge einen link, der ein 2. script aufruft, das dann eine berechnung durchführt (ne html-seite ausspuckt) und anschliessend wieder zu dem 1. script zurückschaltet per javascript und self.location - mit verweis auf das 1. script (kein history.back, da dann keine aktualisierung des 1. script-outputs stattfindet).
Nun meine frage: wie kann ich dem 1. script einen internen link a la "scriptname.pl#bla1..n" übergeben?
ich will nach der berechnung wieder zu dem eintrag springen, an dem ich zuletzt den berechnungsvorgang ausgelöst habe.
any ideas?
Grüße & Danke
Lars
Moin,
Nun meine frage: wie kann ich dem 1. script einen internen link a la "scriptname.pl#bla1..n" übergeben?
a href="script?parameter1=otto¶meter2=erwin
Erwin
Moin,
a href="script?parameter1=otto¶meter2=erwin"
Hinweise:
das & (ampersand) bitte im HTML - Link umschreiben & damit's valid ist (siehe w3.org - da wird immer wieder darauf hingewiesen).
zum Parsen der Parameter kannst du eine Library verwenden , z.B. CGI.pm oder eine eigene funktion, siehe http://perlbase.xwolf.de/cgi-bin/perlbase.cgi?dis.10.8
Erwin
Hallo,
ich glaube ihr habt mich nicht richtig verstanden.
ich möchte in dem html-output direkt zu dem internen verweis springen.
in dem vom script 1 ausgegebenen html ist z.b. <a href="" name="test"> irgendwo in dem html-output.
nun kann man ja z.b. www.test.de/test.html#test aufrufen und man springt zu dem anker "test".
wie geht das nun, wenn nicht test.html aufgerufen wird sondern eben statt dessen ein script das aber auch diesen internen verweis hat?
die "perl-parameterübergabe" stellt nicht das problem dar, dass war ja bisher die erklärungsversuche... oder ich habe das falsch verstanden, aber mit diesen angaben kann ich nichts in bezug auf die internen verweise anfangen.
grüße & danke
lars
Hallo Lars,
ich möchte in dem html-output direkt zu dem internen verweis springen.
Ah ja, jetzt glaube ich zu verstehen, was du willst.
wie geht das nun, wenn nicht test.html aufgerufen wird sondern eben statt dessen ein script das aber auch diesen internen verweis hat?
Für dein Vorhaben ist Perl nicht gedacht.
<idee>
Baue in den Head der vom Script ausgegebenen Seite eine Javascript-Funktion ein, mittels derer du onLoad zum gewünschten Anker springen lässt:
Zum Ermitteln der Position des Ankers:
http://selfhtml.teamone.de/javascript/objekte/anchors.htm
Und um zum Anker zu scrollen:
http://selfhtml.teamone.de/javascript/objekte/window.htm#scroll_to
Du musst nur noch dem Perl-Script den Ankernamen mitteilen, zu dem gescrollt werden soll.
</idee>
Über die Vor- und Nachteile von JavaScript musst du mit Sicherheit nicht aufgeklärt werden ;-)
Grüße
Torsten
Zum Ermitteln der Position des Ankers:
http://selfhtml.teamone.de/javascript/objekte/anchors.htmUnd um zum Anker zu scrollen:
http://selfhtml.teamone.de/javascript/objekte/window.htm#scroll_to
das scheint wohl nicht so ganz alles im IE zu funzen.
anchor.y etc. geht im IE nicht.
jemand da ne lösung für?
Grüße
Lars
Hallo Lars,
Zum Ermitteln der Position des Ankers:
http://selfhtml.teamone.de/javascript/objekte/anchors.htm
das scheint wohl nicht so ganz alles im IE zu funzen.
anchor.y etc. geht im IE nicht.
Ja, die Eigenschaften anchor.x und anchor.y scheint der IE nicht zu kennen. Abhilfe könnte vielleicht das hier schaffen:
http://selfhtml.teamone.de/javascript/objekte/all.htm#scroll_into_view
Dazu müsstest du dann aber noch eine Browserweiche einbauen:
if(document.all) {
document.all.Ankername.scrollIntoView("True");
}
else {
// Anker abfragen und hinscrollen
}
Und in der HTML-Datei:
<a name="Ankername" id="Ankername">
Ungestestet und vielleicht fällt jemandem ja noch was Besseres ein.
Grüße
Torsten
if(document.all) {
document.all.Ankername.scrollIntoView("True");
}
else {
// Anker abfragen und hinscrollen
}Und in der HTML-Datei:
<a name="Ankername" id="Ankername">
ich habe im internet irgendwo was gefunden (http://www.mattkruse.com/javascript/anchorposition/source.html) das hat das irgendwie in ner function gekapselt.
problem hierbei, allein um ans ende der seite zu scrollen bräuchte ich nen wert von ca. 12000, den ankernamen angegeben, der ungefähr an dieser stelle ist, ergibt aber nur 295 oder so - also die rückgabe der coordinaten der function. (vielleicht lags auch daran, das ich die funktionen nicht in eine js datei gepackt habe sondern direkt in die seite aufgenommen hatte?!)
ich habe es jetzt so gelöst ...
<script language="javascript">
window.location.hash='#TOP'; // #TOP wird jeweils im script gegen den richtigen ankernamen ersetzt.
</script>
den jeweiligen sprungpunkt übergebe ich einerseits dem java gedöns und auch dem aus dieser seite aufzurufenden script, was dann wiederrum eben dan #TOP gegen diesen wert ersetzt. funzt im ie einwandfrei, andere browser weiss ich nicht. wäre in meinem falle auch nich so schlimm, da es eh nur ne private sache is, und die leute die das sehen sollen nur den ie verwenden.
schöner wäre natürlich ein allheilmittel.
allerdings erzeugt der aufruf des 1. scriptes durch das 2. script dann mit übergabe des sprungpunktes lustige URI nach dem motto: sprueche.pl?SelectFilter=000&Last=TOP#TOP
damit kann ich aber leben - und in nem frame sieht mans eh nich ;-)
danke für alle helfenden
vielleicht hat ja doch noch jemand ne andere idee.
grüße
lars