Frage an die JavaScript Profis zu Browserweiche

MoinMoin,

ich habe in einer Webseite folgende Browserweiche:

<script type="text/javascript">
if ((navigator.userAgent.indexOf('iPhone') != -1) ||
(navigator.userAgent.indexOf('Android') != -1) ||
(navigator.userAgent.indexOf('IEMobile') != -1) ||
(navigator.userAgent.indexOf('BlackBerry') != -1) ||
(navigator.userAgent.indexOf('iPod') != -1)) {
document.location = "index_m.html";
}
setTimeout("self.location.href='index_d.html'",100);
</script>

Es wird also erst überprüft, ob ein mobile Browser die Seite aufruft, falls nicht, wird auf die Desktopseite weitergeleitet mit dem Timeout 100.

Leider funktioniert das nicht zuverlässig, sehr häufig wird auch auf dem mobile Device die Desktopseite geladen.

Hat jemand einen Tipp, wie man das zuverlässig mit JavaScript lösen kann? Generell wäre es natürlich schöner, wenn die Browserabfrage in der Desktopseite integriert wäre und nicht wie jetzt auf einer separaten Seite.

Vielen Dank für eure Hilfe schon mal vorab.
----------
Gruß
Matt