Mehrfaches Klicken auf Textmarken
Thomas
- html
Hallo,
Ich bin gerade dabei ein Browsergame zu programmieren.
Auf einer Seite soll es möglich sein, seinen Boxer in bestimmten Fähigkeiten zu verbessern.
Da vor den Fähigkeiten des Boxers zunächst einmal die Basisdaten (Name, Alter usw.) des Boxers eingeblendet werden und erst darunter die Fähigkeiten inkl. Verbesserungs-Möglichkeit, habe ich beim Klick auf "Verbessern" eine Textmarke eingebaut.
Hier der HTML-Code:
<h6 style="text-align:center;"><a name="Verbessern">Die Fähigkeiten:</a></h6>
<p>Um eine bestimmte Fähigkeit zu verbessern, musst du einfach hinter der entsprechenden Fähigkeit auf "verbessern" klicken.</p>
<table class="rahmen" align="center">
<tr>
<td>Aggressivität:</td>
<td>10</td>
<td><a href="boxerverbessern.php?BoxerID=123&Skill=aggressiv#Verbessern">verbessern</a></td>
<td align="center" width="50px"> </td>
<td>Agilität:</td>
<td>11</td>
<td><a href="boxerverbessern.php?BoxerID=123&Skill=agil#Verbessern">verbessern</a>
</td>
</tr>
<tr>
<td>Ausdauer:</td>
<td>10</td>
<td><a href="boxerverbessern.php?BoxerID=123&Skill=ausdauer#Verbessern">verbessern</a></td>
<td align="center" width="50px"> </td>
<td>Immunität (gegen Verletzungen):</td>
<td>10</td>
<td><a href="boxerverbessern.php?BoxerID=123&Skill=immunitaet#Verbessern">verbessern</a></td>
</tr>
</table>
Beim ersten Klick auf "Verbessern" funktioniert das wunderbar:
Danach passiert allerdings folgendes:
Hat jemand eine Idee woran das liegen könnte?
Ist es denn nicht möglich, zweimal hintereinander die gleiche Textmarke anzuklicken?
Vielen Dank vorab für alle hilfreichen Beiträge!
Mit freundlichen Grüßen,
Thomas
Hi,
<h6 style="text-align:center;"><a name="Verbessern">Die Fähigkeiten:</a></h6>
Wozu das a-Element? Den Fragment identifier kannst Du auch als id im h6 unterbringen.
<td><a href="boxerverbessern.php?BoxerID=123&Skill=aggressiv#Verbessern">verbessern</a></td>
Das & in der URL muß als & notiert werden.
<td><a href="boxerverbessern.php?BoxerID=123&Skill=agil#Verbessern">verbessern</a>
<td><a href="boxerverbessern.php?BoxerID=123&Skill=ausdauer#Verbessern">verbessern</a></td>
<td><a href="boxerverbessern.php?BoxerID=123&Skill=immunitaet#Verbessern">verbessern</a></td>
Beim ersten Klick auf "Verbessern" funktioniert das wunderbar:
weil sich dadurch nicht nur der fragment identifier ändert, sondern auch die der Rest der URL (Skill-Parameter). Also fordert der Browser das Dokument erneut an.
Danach passiert allerdings folgendes:
- klicke ich anschließend auf einen anderen Link (der zwar auf die selbe URL führt, aber einen anderen Skill-Parameter übergibt)
die zwei Satzteile in der Klammer widersprechen sich. Entweder ist es dieselbe URL, oder aber ein anderer Skill-GET-Parameter).
, so funktioniert es erneut
natürlich. Es hat sich wieder nicht (nur) der fragment identifier geändert, sondern der Rest der URL.
- klicke ich aber zweimal hintereinander auf den gleichen Link, so passiert nichts beim Anklicken des Links
Natürlich nicht. Der Rest der URL hat sich nicht geändert - also kein Grund für den Browser, die Seite erneut anzufordern, er springt nur zum gewünschten Fragment Identifier.
Wenn Du vor dem zweiten Klick auf denselben Link die Seite verscrollst, wirst Du sehen, daß der fragment identifier erneut angesprungen wird.
Hat jemand eine Idee woran das liegen könnte?
Am Prinzip, wie fragment identifier funktionieren.
Ist es denn nicht möglich, zweimal hintereinander die gleiche Textmarke anzuklicken?
Doch, natürlich, das funktioniert wunderbar. Nur Du willst ja jedesmal eine
Ändere jedesmal die URL (indem Du z.B. einen dummy-Parameter anhängst, der einen Timestamp oder einen anderen sich immer ändernden Wert enthält.
cu,
Andreas
@@MudGuard:
nuqneH
Das & in der URL muß als & notiert werden.
Nö, muss es nicht. Es muss escapet werden, dafür sind noch zwei andere Schreibweisen möglich.
SCNR. Ich hab heute meinen Klugscheißertag.
Qapla'
Hi,
SCNR. Ich hab heute meinen Klugscheißertag.
HEUTE???
cu,
Andreas
Das & in der URL muß als & notiert werden.
Nö, muss es nicht. Es muss escapet werden, dafür sind noch zwei andere Schreibweisen möglich.
Ehrlich? Ich dachte immer, in einem URL ist (nur) %26 erlaubt.
Hi,
Ehrlich? Ich dachte immer, in einem URL ist (nur) %26 erlaubt.
Hier geht es aber nicht um URL-Escaping, sondern um HTML-Escaping.
cu,
Andreas
Hier geht es aber nicht um URL-Escaping, sondern um HTML-Escaping.
Achso, es ist also Aufgabe des Browsers, aus dem (korrekt escapten) HTML einen (korrekt escapten) URL zu machen? Ich bin bislang davon ausgegangen, dass das, was z.B. in <a href="boxerverbessern.php?BoxerID=123&Skill=aggressiv"> in den Anführungszeichen steht, ein URL ist (steht nämlich auch so in http://de.selfhtml.org/html/referenz/attribute.htm#a@title=SELFHTML: href "gibt das Verweisziel (nach RFC 2396) an" (obsolet durch RFC 3986))und deshalb auch so zu escapen ist.
@@Jatta:
nuqneH
was z.B. in <a href="boxerverbessern.php?BoxerID=123&Skill=aggressiv"> in den Anführungszeichen steht, ein URL ist
Ja.
und deshalb auch so zu escapen ist.
Du willst den URI als @href-Wert notieren? Dann muss das '&' im HTML-Kontext escapet werden:
<a href="boxerverbessern.php?BoxerID=123&Skill=aggressiv">
.*
Das wären dann zwei Parameter im Query: 'BoxerID' mit dem Wert "123" und 'Skill' mit dem Wert "aggressiv".
Ist hingegen das '&' im URI escapet als
<a href="boxerverbessern.php?BoxerID=123%23Skill=aggressiv">
,
dann wäre das etwas völlig anderes, nämlich ein Parameter im Query: 'BoxerID' mit dem Wert "123&Skill=aggressiv".
Qapla'
* oder mit NCR
Hi,
Hier geht es aber nicht um URL-Escaping, sondern um HTML-Escaping.
Achso, es ist also Aufgabe des Browsers, aus dem (korrekt escapten) HTML einen (korrekt escapten) URL zu machen? Ich bin bislang davon ausgegangen, dass das, was z.B. in <a href="boxerverbessern.php?BoxerID=123&Skill=aggressiv"> in den Anführungszeichen steht, ein URL ist
Ist es ja auch.
Aber es geht doch nicht darum, dem Zeichen & in der URL seine Sonderbedeutung "Parametertrenner" wegzunehmen, sondern es geht darum, dem Zeichen & im HTML-Attribut seine Sonderbedeutung "Anfang einer Character-Entity" oder "Anfang einer numerischen Zeichenreferenz" wegzunehmen.
(steht nämlich auch so in http://de.selfhtml.org/html/referenz/attribute.htm#a@title=SELFHTML: href "gibt das Verweisziel (nach RFC 2396) an" (obsolet durch RFC 3986))und deshalb auch so zu escapen ist.
Stünde die URL in einem title-Attribut, müßte dennoch das & HTML-escaped werden. Auch wenn die URL dort aus HTML-Sicht nur einfacher Text ist.
cu,
Andreas
Lieber Thomas,
der Browser interpretiert einen Link mit Parameter als eine Resource. Ändert sich der Parameter bei ansonsten gleichbleibender URL, interpretiert der Browser das als neue Resource. Ändert sich der Textanker bei ansonsten gleichbleibender Resource, interpretiert der Browser das als identische Resource und sieht keinen Bedarf, die Seite neu zu laden - er springt lediglich auf der aktuellen Seite an eine bestimmte (andere?) Stelle (seiteninterne Navigation).
Du solltest nach jedem Abarbeiten des Requests Deine Links mit einem neuen Timestamp versehen, damit der Browser die Resourcen als neu anerkennt:
<a href="boxerverbessern.php?BoxerID=123&Skill=immunitaet&time=1342412399#Verbessern">(Linktext)</a>
Beachte auch, dass ich meine &-Zeichen korrekt als HTML-Entities maskiert habe! Dein Codebeispiel war in dieser Hinsicht syntaktisch nicht korrekt!
Liebe Grüße,
Felix Riesterer.