Kjapp og trygg hosting for Wordpress

Link til navngitt ankertekst i annet dokument i Internet Explorer?

Tonny Kluften

Administrator
Adding Links to a Named Anchor in Another Document, eller på norsk, linke til navngitt ankertekst i annet dokument, i Internet Explorer?

På en side har jeg linken:
Kode:
<a href="http://www.qweqweqwe.no/1111#middle" >klikk her</a>

Dette skal vises på en annen side
Kode:
<a name="midle" href="http://www.qweqweqwe.no/1111">tekst</a>

Det fungerer i FF og Chrome, men ikke i IE. Noen som har en løsning?
 

adeneo

Medlem
location hash skal virke i IE så vidt jeg vet, selv om ingenting er sikkert med den nettleseren.
Det er nok noe som er feil et eller annet sted.

Regner med dette bare er en trykkleif, og at det er i orden på siden din:

Kode:
<a href="http://www.qweqweqwe.no/1111#[COLOR="red"]middle[/COLOR]" >klikk her</a>

Kode:
<a name="[COLOR="red"]midle[/COLOR]" href="http://www.qweqweqwe.no/1111">tekst</a>

Og at 1111 er en eller annen fil som du har fjernet endelsen på eller at du skriver om adresser dersom det er en mappe, ellers så er det vanlige for mapper:

Kode:
<a href="http://www.qweqweqwe.no/1111[COLOR="purple"]/[/COLOR]#middle" >klikk her</a>

Du kan også prøve å gi elementet en ID, og ikke bare et navn, selv om det normalt er navnet som brukes som anchor, så kan det være at en ID løser problemet:


Kode:
<a name="middle" [COLOR="purple"]id="middle"[/COLOR] href="http://www.qweqweqwe.no/1111">tekst</a>
 

adeneo

Medlem
Har testet litt lokalt her med to filer hvor den ene har en link til den andre osv. og hos meg så scroller IE dit den skal både med <div> og <a> elementer, og har forsøkt både med name og id, og den scroller alltid dit den skal i IE 7,8 og 9, så det må være noe annet som er problemet, men kommer ikke på noe i farten som det kan være og fant ikke noe nyttig med et kjapt Google søk heller så det er nok ikke noe veldig vanlig problem.

Det er litt pussig at det virker i andre nettlesere men ikke IE (vel, egentlig ikke), og at det ikke virker når man først følger linken, men så virker når man laster siden på nytt, det skulle normalt være det samme, og det kan være et cache problem eller noe lignende, selv om det virker noe rart ???

Det går sikkert alltids an å lure det til med noe kreativ javascript, men det skal i grunn ikke være nødvendig, det må være en eller annen grunn til at det er slik, og det er vanskelig å si akkurat hva det er ut i fra bare to linker !

Gjelder det IE9 også, eller bare eldre versjoner av IE, og har du sjekket konsollen i IE (F12) for andre mulige feil ?
 
Koden din ser ut som markup sånn circa 1997. Det er ikke sånn det bør gjøres lenger.

Ønsker du å tagge noe med en fragment identifier kan du bruke følgende markup.
HTML:
<span id="middle"><a href="http://www.qweqweqwe.no/1111">tekst</a></span>

Gjøres det riktig funker det helt greit for meg i MSIE 8. Test f.eks. denne lenken: Fragment test i ymse browsere.

Det er en del ting å passe på:
  • Sørg for at du bruker staveformen på fragment-iden begge steder.
  • "name" er depreciated som fragment identfier - bruk "id", jf. W3C.org. "name" burde imidlertid funke i HTML 4.0 strict - men "id" er det sikre kortet.
  • Bruk ikke både id og name-attributt i samme element.
  • Sørg for at siden din validerer. Du kan ikke forvente at oppførselen er forutsigbar uten at koden validerer, jf. The W3C Markup Validation Service
  • Sørg for å ha en gyldig "strict" DTD. Uten en slik DTD går MSIE inn i "quirks" mode - dvs. emulerer gamle bugs. Da er det mye som slutter å funke.
 

adeneo

Medlem
Så vidt jeg kan se er koden til Tonny generert av Wordpress, så at den er så veldig 1997 vet jeg ikke helt?

Har sett så vidt på koden, og det ser ut til at elementet er tomt, og IE har en kjent bug hvor tomme elementer ikke registreres, altså må <a> elementet ha innhold, og det har Gisle forøvrig også fått med i sitt eksempel :

Kode:
<a href="http://sija.no/....." name="top"><img src="etterellerannet.png"  />[COLOR="red"]&nbsp;[/COLOR]</a>

Får ikke testet dette her, så vet ikke om det er feilen, bare tipper ut i fra hva jeg kunne se?

Sånn ellers så heter det "named anchor", og anchor elementet bør da være det beste elementet å bruke til slikt, og det skal være unødvendig å ha en span rundt.

De fleste bruker i dag ID og ikke name til slikt, men opprinnelig var det name som var det riktige, og det er derfor det heter named anchor.
I HTML5 har ikke <a> elementet noen "name" attribute, så derfor er det ugyldig å bruke name for et <a> element i HTML5, og nye nettlesere vil normalt søke etter en ID før det søkes etter name, men begge virker helt fint i alle nettlesere, og uten at det er særlig relevant så virker kun name i eldre utgaver av Netscape, og ikke ID.
Ved slike søk etter anchors er navnet som brukes også normalt case sensitivt.

Det er heller ingen problemer å bruke både name og ID, og det gjøres hele tiden, det er greit å vite at de bruker samme namespace og er unike, slik at samme navn/id kun kan forekomme en gang i et dokument, og de bør normalt være like når de brukes i samme element.
Se W3C for mer info :D
 
Så vidt jeg kan se er koden til Tonny generert av Wordpress, så at den er så veldig 1997 vet jeg ikke helt?

Sånn ellers så heter det "named anchor", og anchor elementet bør da være det beste elementet å bruke til slikt, og det skal være unødvendig å ha en span rundt.

Se W3C for mer info :D

"Named anchor" var noe som dukket opp i HTML 3.2 (som kom i januar 1997).

Men det er nå en stund siden denne type konstruksjon byttet navn fra named anchor til fragment identifier. Derav min referanse til år 1997. I dag mener jeg at bruken av name-attributtet sammen med et anchor-element til å identifisere fragmenter er passé (det er mulig å knytte et id-attributt til et anchor-element - man da må det være et anker man faktisk bruker til noe, ikke et dummy-anchor opprettet kun for å injisere en identifikator i i teksten).

W3C standarden du lenker til er HTML 4.0.1 - utgitt i 1999. Dokumentet til Tonny har følgende DTD:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Den W3C-standarden som du lenket til gjelder altså HTML 4.0.1, ikke XHTML 1.0 - og er følgelig irrelevant her.

Jeg har allerede lenket til den relevante W3C-standarden. Her er lenken på nytt: W3C: XHTML 1.0. Der står det bl.a.:

XHTML 1.0 documents MUST use the id attribute when defining fragment identifiers on the elements listed above.

Da kan man ikke klage på at name attributtet ikke har den ønskede effekt. Greit nok at dette attributtet fortsatt støttes av en del browsere - praksisen blant browser-produsentene ser ut til å være å støtte legacy-konstruksjoner over en lav sko. Men jeg mener at man kan ikke klage på at et en bestemt browser ikke støtter en konstruksjon som W3C ikke sier den skal støtte - særlig ikke når man bruker en "strict" DTD. Derfor bør første stopp ved feilsøking være validering. Først når markup validerer trenger man å se etter andre feilkilder (som f.eks. bug i browseren).
 
Topp