Ongeldige code Wat betekent href = #?

Deze specifieke code in een tag wordt vaak gezien in voorbeeldcode die JavaScript bevat. Meestal ziet u het er ongeveer zo uitzien waar het primaire doel van de tag is een link te bieden waarop mensen kunnen klikken om wat JavaScript uit te voeren.

Bij gebruik in voorbeeldcode zoals dat, is het # een plaatshouder die aangeeft waar u de link daadwerkelijk naartoe wilt laten gaan als de persoon die uw pagina bezoekt geen JavaScript heeft ingeschakeld.

Wanneer u href = "#" ziet in live code op een webpagina, betekent dit dat de persoon die de pagina heeft geschreven een fout heeft gemaakt. Je zou nooit href = "#" moeten zien in de daadwerkelijke broncode van een webpagina omdat de # zelf feitelijk ongeldig en betekenisloos is.

Wanneer u JavaScript aan een link koppelt, of dat nu zo is of een onopvallend equivalent gebruikt, moet u altijd rekening houden met degenen die om welke reden dan ook JavaScript niet hebben ingeschakeld. De return false aan het einde van mijn voorbeeld hierboven wordt voorkomen dat de href daadwerkelijk wordt gebruikt als de JavaScript wordt uitgevoerd, maar de href is nog steeds wat zal worden gebruikt als om welke reden dan ook de JavaScript niet wordt uitgevoerd. De href moet daarom een ​​werkelijke geldige waarde bevatten op basis van waar u wilt dat de link mensen neemt die geen JavaScript beschikbaar hebben. Omdat de persoon die het JavaScript voor u heeft geschreven niet weet waar u die mensen naartoe wilt brengen, hebben ze zojuist een # in hun code ingevoegd waar u het echte adres moet vervangen.

Een # is geldig in een href-kenmerk, op voorwaarde dat dit niet het enige teken in de waarde is. Waar de # wordt gevolgd door extra tekens, zijn die extra tekens de waarde van een id-kenmerk elders op de huidige webpagina en de pagina springt om de tag met die id zo dicht mogelijk bij de bovenkant van het browservenster weer te geven. Springt bijvoorbeeld naar dezelfde webpagina. Als u ook een bestandsnaam hebt die voorafgaat aan het #, bevindt de id waarnaar deze springt zich binnen die webpagina, dus springt u naar die id op de volgende.htm-pagina.

Een # -teken is niet geldig als het laatste teken van de href, omdat het impliceert dat u naar een id op de pagina wilt springen, maar de waarde van de id waarnaar u wilt springen niet is opgegeven. De actie die de browser in dat geval moet ondernemen, is niet gedefinieerd, maar de meeste springen gewoon terug naar de bovenkant van de huidige pagina.

Dus wat doe je als het JavaScript dat je wilt koppelen zodanig is dat er geen alternatief is voor degenen zonder JavaScript? Welnu, in dat geval wilt u niet dat degenen zonder JavaScript de link zien, want als het voor hen zichtbaar is, zullen sommigen erop klikken en u hebt niets dat u voor hen wilt doen en dat zal gewoon verwarrend zijn. De oplossing is daarom om ervoor te zorgen dat de link alleen zichtbaar is voor degenen met JavaScript ingeschakeld en de manier om dat te doen is om de link toe te voegen aan de webpagina met behulp van JavaScript.

Alleen waar de wordt toegevoegd aan de webpagina met behulp van JavaScript, kunt u er zeker van zijn dat iedereen die op de link klikt JavaScript heeft ingeschakeld en tat daarom de doSomething () -code wordt uitgevoerd en de href = "#" wordt genegeerd. Dan en alleen dan heeft het zin om het # op die plek in de code te laten, omdat het href-kenmerk vereist is voor sommige browsers om de code als een geldige link te accepteren en als je weet dat de enige mensen die de link zal JavaScript ingeschakeld hebben, je weet ook dat niemand daarom ooit daadwerkelijk zal worden meegenomen naar de plaats waarnaar de href verwijst en dus kan het alles bevatten zonder dat het iets uitmaakt en dus # is zo goed als een waarde en is zeker beter dan href = "javascript:" (dit is een constructie die nooit mag worden gebruikt, ongeacht of er iets op de dubbele punt volgt of niet).