Dein Problem ist mit einer Pseudo-Klasse nicht lösbar.
Mit Javascript KANNST Du aber alle Links durchsuchen und, wenn dieser mit der aktuellen URL übereinstimmt, eine eigene Klasse setzen:
Tip: Die Funktionen addClassName()
, removeClassName()
, hasClassName()
und getOrCheckObjekt() würde ich in eine Skript-Datei auslagern. Die brauchst Du bestimmt nochmal.
<!DOCTYPE HTML>
<html lang="de">
<head>
<title>selflink</title>
<meta charset="utf-8">
<style>
li a {
padding: .2em .3em .2em .3em;
}
li a.SelfLink,
li a.SelfLink:visited {
background-color:#ccf;
}
</style>
</head>
<body>
<h1>selflink.htm</h1>
<ul>
<li><a href="foo">foo</a></li>
<li><a href="foo">foo</a></li>
<li><a href="selflink.htm">foo</a></li>
</ul>
<script>
function MarkSelfLinks() {
var thisUrl=document.location.href;
var allLinks = document.getElementsByTagName('a');
for ( let i=0; i < allLinks.length; i++) {
if ( 0 == thisUrl.indexOf( allLinks[i].href ) ) {
addClassName( allLinks[i], 'SelfLink');
}
}
}
function addClassName( o, cName ) {
o = getOrCheckObjekt( o );
if ( o && ( ! hasClassName( o, cName ) ) ) {
if ( o.className ) {
var s = o.className;
s = o.className + ' ' + cName;
s = s.replace( /^ +/ ).replace( / +$/ );
o.className = s;
} else {
o.className = cName;
}
return true;
}
return false;
}
function removeClassName( o, cName ) {
o = getOrCheckObjekt( o );
if (o) {
if( cName==o.className ) {
o.className='';
return true;
} else {
var c = o.className;
var a = c.split( / +/ );
var aNew = new Array();
var m = 0;
for ( let i = 0; i < a.length; i++ ) {
if ( cName != a[i] ) {
aNew[++m] = a[i];
}
}
o.className = aNew.join(' ');
return true
}
}
return false;
}
function hasClassName( o, cName ) {
o = getOrCheckObjekt( o );
if ( o ) {
var c = o.className;
var a = c.split( / +/ );
for ( let i = 0; i < a.length; i++ ) {
if ( cName == a[i] ) {
return true;
}
}
}
return false;
}
function getOrCheckObjekt( o ) {
if ( ! 'object' == typeof( o ) ) {
o = document.getElementById( o );
}
if ( 'object' == typeof( o ) ) {
return o;
}
console.log( 'kein Objekt übergeben, "' + o + '" ist unbekannt"' );
return false;
}
MarkSelfLinks();
</script>
</body>
</html>