• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Browser Selektion mit JS

Pixel-Wizard

Mitglied
Hallo zusammen

ist es möglich, eine Funktion je nach Browser auszuführen. Es sollte etwa folgendermassen aussehen
Code:
<script>
if([I]browser [/I]== "firefox")
/*Funktion*/

else if([I]browser [/I]== "chrome")
/*Funktion*/

etc..
</script>

gibt es eine Funktion, welche den Browser rausfindet?

Liebe Grüsse
Pixel-Wizard
 
Werbung:
Damit lassen sich die Informationen abrufen:
PHP:
$_SERVER['HTTP_USER_AGENT']

So sähe die Ausgabe z. B. aus:


Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3

Diese Info ist aber überfüllt und wirkt unübersichtlich. Mittels strpos kann man aber das ausgeworfene auf einen bestimmten Teil absuchen und ein echo auswerfen lassen. Das könnte so aussehen: die Variable $user_agent muss erst vordefiniert werden:
PHP:
$user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';


Und jetzt zur eigentlichen Echo Ausgabe:
PHP:
if(strpos($user_agent, 'Opera') !== false)   {   echo 'Sie verwenden Opera.';   }


In der ersten Zeile wird die ganze Ausgabe nach "Opera" abgesucht und bei einem Treff wird das echo ausgegeben. Möchte man das gleiche für den Internet Exporer machen fügt man der Funktion folgendes bei:
PHP:
elseif(strpos($user_agent, 'MSIE') !== false)   {   echo 'Sie verwenden den Internet Explorer.';   }


Es wird Nicht nach Internetexporer gesucht sondern nach MSIE, weil das im String so ausgeworfen wird.

Man kann auch nach Versionsnummern unterscheiden. Dabei wird einfach dahinter 7.0 oder 6.0 (...) je nach dem:
PHP:
elseif(strpos($user_agent, 'MSIE 6.0') !== false)   {   echo 'Sie verwenden den Internet Explorer 6.0, bitte aktualisieren sie auf die neueste Version.';   }


So kann man alle gängigen Browser hinzufügen. Sollte mal ein Browser nicht dabei sein, muss man auch eine else-Ausgabe definieren, also falls gar nix der definierten Begriffe gefunden wird:
PHP:
else   {   echo 'Sie verwenden einen von mir nicht getesteten Browser.';   }


Ich verwende das, um meinen Besuchern gleich auf der ersten Seite zu sagen, ob meine Seite mit ihren Browser richtig angezeigt wird oder nicht. Für den IE gibt es ja die speziellen Tags die nur der IE anzeigt, mit diesem Script kann man das auf für den Firefox beschränken und eine eigene Info ausgeben lassen.

Hier mal der ganze Code im Überblick: Ich habe "Sie verwenden " geschrieben und dahinter werden die echos ausgegeben, also nicht wundern warum die echos so komisch anfangen.
PHP:
<?php   $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';   if(strpos($user_agent, 'Opera') !== false)   {      echo 'Opera. Mit diesem Browser wird die Seite richtig und fehlerfrei dargestellt.';   }   elseif(strpos($user_agent, 'Firefox') !== false)   {    echo 'Mozilla Firefox. Mit diesem Browser wird die Seite richtig und fehlerfrei dargestellt.';   }   elseif(strpos($user_agent, 'MSIE 7.0') !== false)   {      echo 'den Internet Explorer 7. Die Seite wird fehlerfrei dargestellt, aber das Design weicht ab. Ich empfehle Ihnen, Mozilla Firefox oder Opera zu verwenden.';   }  elseif(strpos($user_agent, 'MSIE 6.0') !== false)   {      echo 'den Internet Explorer 6. Es kann zu Fehlern in der Darstellung kommen, bitte aktualisieren sie ihren Browser auf die aktuellste Version.';   }   else   {      echo 'einen unbekannten Browser. Die Seite wird wohlmöglich nicht fehlerfrei und richtig dargestellt. Ich empfehle Ihnen, Mozilla Firefox oder Opera zu verwenden.';   }   ?>

Liebe Güßre aus Bremerhaven
A. Lörbs
 
wow!

Zuerst mal vielen Dank für die ausführliche Antwort.

Ich habe jedoch noch eine Frage. Meine Funktion ist in JS geschrieben. Wie kann ich jetzt einen Javascript-Code in diesen PHP Code einfügen? Ist es möglich das man es folgendermassen macht?

PHP:
$user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; 

if(strpos($user_agent, 'Mozilla') !== false)
{
<script>JS-Funktion 1</script>
} 

if(strpos($user_agent, 'Opera') !== false)
{
<script>JS-Funktion 2</script>
}
 
Werbung:
Hey, gerne.... Hasse es auch wenn immer so blöde Anworten kommen, die man dan überhaupt nicht anwenden kann...
Dein JS Code kannst du ganz einfach einbinden:

PHP:
<?php .....
echo "<script language="JavaScript"> ...... </script>";
?>

echo "<script language="JavaScript" type="text/JavaScript">";
usw. Zeile für zeile

Achten musst du darauf, dass der Befehl echo"........."; lautet
Auch müssen bei " welche zum Javascript gehören davor gestellt werden

Hier gibts die Beispiele dazu:

http://www.selfphp.com/funktionsrefe...ionen/echo.php

Ich freu mich das ich dir Helfen konnte. :wink:

Gruß
A. Lörbs
 
Zuletzt bearbeitet:
Geht auch!
Musst du dir Ansehen wie du es haben möchtest. Wie sagt mein Opa immer so schön...
"Alle Wege führen nach Rom!" in diesen Fall: "Viele Wege führen nach Rom!" :-)

So euch noch einen schönen ersten Mai... Ich will noch das Wetter ein wenig genissen...

Liebe Grüße
A. Lörbs
 
Werbung:
Hi nochmals

Also dies mit dem javascript code schreiben via echo(), hat bei mir nicht geklappt. es gibt bei mir nur aus was ich geschrieben habe. Als bei zum Beispiel:
Code:
<?php
echo '<script>alert("test");</script>';
?>

gibt es bei mir alert("test");'; aus. Ist was schiefgeloffen oder funktioniert es nicht weil es nicht möglich ist.

Und noch eine Frage: Ist es möglich eine Funktion, in einem <script>-Code innerhalb des PHP-Codes abzurufen? Also etwas in folgender Art?

Code:
<div onmousehover="jsfunktion()"></div>
<?php
echo "<script>function jsfunktion(){alert("test");}</script>";
?>
 
Man gibt weder JavaScript (oder HTML) via echo aus, noch schreibt man JavaScript ins HTML. Genauso wie styling ins CSS ausgelagert wird, trennt man Scripte vom Markup. Also vergiss das onmouseover() lieber gleich, bevor du dich eventuell tiefergehend mit JS auseinandersetzen solltest.

Was die Schreibweise betrifft:

JavaSript-Ausgabe in PHP:
PHP:
<?php if (1 !== 2): ?>
    <script>
        alert("Hi there");
    </script>
<?php endif; ?>

Click-Event mit JavaScript:
Code:
<button id="button">Button 1</button>

<script>
var id = document.getElementById("button");
id.addEventListener("click", clickMich, false);
	
function clickMich() {
    alert ("Hi, I'm JavaScript");
}
</script>

und eine kürzere Variante mit jQuery:
Code:
<button id="button2">Button 2</button>

<script>
$('#button2').on('click', function() {
    alert("Hi, I'm jQuery");
});
</script>
 
addEventListener sollte man nicht alleine benutzen, wenn man nich IE < 9-Benutzer komplett ausschließen will. jQuery ist da wirklich besser für geeignet, da jQuery alle Fälle beachtet.
 
Werbung:
Zurück
Oben