Prüfen ob Surfer die Seite mit einem Smartphone aufruft

VIPbanner_de

www.VIPbanner.de
ID: 72674
L
1 Mai 2006
2.598
150
Hallo,

gibt es eine simple möglichkeit zu prüfen ob ein Surfer die Seite mit einem Smartphone aufruft?

Grund: AUf einer meiner Seiten wird ein Layerad eingeblendet. Dieses soll aber nicht angezeigt werden wenn ein BEsucher die Seite mit einem Smartpohone aufruft, da sich dieses Layerad nur schwer schließen lässt.

Hat jemand eine Idee wie man das Problem lösen könnte?
 
Detect Mobile Browsers ist schonmal eine gute fertige Implementierung auf Basis des User Agents ;)

Man könnte natürlich auch Displaygrößen betrachten, schauen ob Touch Events verfügbar sind usw. aber das ganze wird dann deutlich komplizierter.
 
Wie wird das Ganze denn eingebunden? Wenn's komplett per JS ist, kannst Du folgenden Code aussenrum bauen:
PHP:
if (screen.width > 480) {

  // Hier der eigentliche Code...

}
Das Problem wird ja auf jedem Gerät mit kleinem Bildschirm auftreten. Da reicht dann eigentlich der simple Test auf Bildschirmgröße.
 
Früher oder später werden die Handys ihren großen Brüdern, den Tablets, mit Auflösung nachziehen. 480 Pixel Breite is jetzt nicht soo viel.

Laut dieser Quelle liegt das iPhone (was astrein bei "Smartphone" einzuordnen is) schon bei einer horizontalen Pixelzahl von 640.
 
Das stimmt in der Tat. Allerdings wird das Problem mit dem Layer ja ab einer bestimmten Bildschirmbreite oder -höhe nicht mehr auftreten. Diese Grenze müsste man dann halt ermitteln.

Ich wollte auch nur anmerken, dass der Test auf mobile Geräte nicht wirklich nötig ist. Wie schnell ist so ein Mechanismus veraltet und erkennt manche Geräte nicht mehr. An dieser Stelle ist das limitierende Element eben nicht das Gerät als solches sondern die maximal darzustellende Auflösung, deren Erkennung immer konstant ist und eigentlich nie wieder angefasst werden muss. Wieso sollte man das dann nicht als ausschlaggebendes Kriterium nehmen?
 
Das stimmt in der Tat. Allerdings wird das Problem mit dem Layer ja ab einer bestimmten Bildschirmbreite oder -höhe nicht mehr auftreten. Diese Grenze müsste man dann halt ermitteln.
da wäre ich mir nicht so sicher ;)
Das Problem an den Layercodes ist eben ihr komisches Verhalten auf Smartphones. Wenn man versucht die Seite zu zoomen dann zommt teilweise. auch der Layer weil dieser sich irgendwie anpasst, warum auch immer.
Zudem sind die Schaltflächen zum Schließen für Mauszeiger optimiert und somit oftmals gerade so groß wie dieser, bei Touchscreens geht man aber von einer Breite und Länge von 30-40 Pixel für die Klickfläche aus, der Schließen-Button ist also zu klein, und da ändert auch ein etwas größeres Display nichts.
Und Zommen ist wie gesagt teilweise einfach nicht möglich.
 
danke für die hilfe.. habe es mit unterstützung jetzt so lösen können:

PHP:
<script type="text/javascript">
if(screen.width > 480){
var script   = document.createElement("script");
script.type  = "text/javascript";
script.src   = "https://www.sponsorads.de/script.php?s=203981";    // use this for linked script
document.body.appendChild(script);
}
</script>
 
ok, der java-scriptcode scheint doch nicht so richtig zu sein. Die Seite war noch im Browser und daher wurde das Layerad bei mir noch angezeigt... mit diesem Java Scriptcode wird gar kein Layerad mehr aufgerufen. Erkennt jemand woran das liegen kann?

Einbau erfolgte vor </head>
 
Also ich kann da keinen Fehler entdecken, arbeite aber auch nicht viel mit JS.
Spontan würde ich vermuten, dass das Layer-Ad-Script erkennt, dass der Besucher vor kurzem einen Layer-Ad gesehen hat. Also zeigt er erst mal keinen weiteren. Stichwort: Reloadsperre

Ich frage mich allerdings, wie man heutzutage noch sowas abschrekendes wie Layer-Ads einsetzen kann.

Prinzipiell zum Thema Smartphone:
müssten die nicht auch auf den CSS-Medientyp media="handheld" reagieren?
 
Nein, handhelp war mehr für frühere Browser. Dieheutigen rendern mit den gleichen Einstellungen wie Desktop- Browserund können in CSS nicht unterschieden werden, man kann nur mit Media Queries auf kleine "Browserfenster" reagieren.
 
Das Problem liegt darin, dass das eingebundene Javascript seine Ausgabe mittels document.write() macht. Du müsstest an der Stelle somit auch mit document.write() arbeiten:
PHP:
<script>
if (screen.width > 480) {
     var url = 'https://www.sponsorads.de/script.php?s=203981';
     document.write('<script src="' + url + '" type="text/javascript"><\/script>');
}
 
Das Problem liegt darin, dass das eingebundene Javascript seine Ausgabe mittels document.write() macht. Du müsstest an der Stelle somit auch mit document.write() arbeiten:
PHP:
<script>
if (screen.width > 480) {
     var url = 'https://www.sponsorads.de/script.php?s=203981';
     document.write('<script src="' + url + '" type="text/javascript"><\/script>');
}

das </script> fehlte noch.. aber es funktioniert einwandfrei.. danke