@Hexagon Theory: Warum sollten Sie jemals das gesamte Kopfelement neu schreiben, nur um den Wert eines Elements im Kopf zu ändern? Ihre Lösung ist auf mehreren Ebenen furchtbar ineffizient.
<html>
<head>
<link rel="icon" href="on.png" type="image/png" id="changeMe" />
<script type="text/javascript" src="flash.js"></script>
</head>
<body>
</body>
</html>
flash.js:
function Flasher(speed) {
var elem = document.getElementById('changeMe');
this.timer = setTimeout(function() {
elem.href = elem.href == 'on.png' ? 'off.png' : 'on.png';
}, speed);
this.stop = function() { clearTimeout(this.timer); }
}
/* sample usage
*
* var flasher = new Flasher(1000);
* flasher.stop();
*/
Es musste nicht unbedingt eine Klasse sein, aber es half, den globalen Namespace sauber zu halten. Das ist ungetestet, aber wenn das einfache Ändern der href aus irgendeinem Grund nicht funktioniert, klonen Sie den Link-Knoten, ändern Sie die href und ersetzen Sie den alten Link durch den geklonten.