2016-04-07 6 views
0

Gibt es eine Klasse/Skript/Möglichkeit, Websites für Responsive Design zu überprüfen? Es könnte so ähnlich sein:PHP: Überprüfen Sie die Website für Responsive Design

if (is_responsive('http://www.site.tld')) { 
    echo 'is responsive'; 
} 
else { 
    echo 'is not responsive'; 
} 

Irgendwelche Ideen?

+3

Vielleicht können Sie ihre Stylesheets für '@ media' Selektoren – Jer

+1

Scannen Ein Weg wäre, CSS zu bekommen und zu überprüfen, ob dort Medienabfragen sind. Medienabfragen können aber auch für viele Dinge verwendet werden, man müsste sie analysieren und herausfinden, ob sie tatsächlich auf unterschiedliche Bildschirmgrößen reagieren. – Eihwaz

+0

Nein, weil "Responsive-Ness" eine Sache auf der Clientseite ist und die Techniken, die zur Implementierung von "Responsive-Ness" verwendet werden, nicht nur dazu verwendet werden, einer Website "Responsive-Ness" hinzuzufügen. –

Antwort

7

Es gibt zwei mögliche * Möglichkeiten dies zu tun:

  1. Sie JavaScript nutzen könnten, um festzustellen, ob es irgendwelche Medienabfragen in CSS ist dann einen Wahr/Falsch-Variable senden an PHP mit Ajax

  2. Vielleicht verwenden Sie Ihre serverseitige Sprache, um Ihre CSS-Datei zu lesen und RegEx zu verwenden, um nach Medienabfragen in der Datei zu suchen.

Diese Methoden sind nicht zu arbeiten, und es gibt wirklich keine „Standard“, „sicher“ oder „Nicht-hackey“ Art und Weise, dies zu tun, auch Sie CAN NOT Einsatz serverseitige Technologie direkt garantiert Medienabfragen behandeln.

RegEx ist, die Sie verwenden können @media Regeln anzupassen sind:

  1. ^\@media\s(.*?)\{$

    ^= Position am Anfang des Strings behaupten
    \ @ = entspricht dem Zeichen @ buchstäblich
    media = stimmt mit den Zeichenmedien überein wörtlich
    \ s = mit einem Leerzeichen übereinstimmen [\ r \ n \ t \ f]
    . *? = Jedes Zeichen (außer Newline)
    {= den Charakter passt {buchstäblich
    $ = Position am Ende des

  2. \@media\s(.*?)\{

    \ @ = string behaupten entspricht dem Zeichen @ buchstäblich
    Medien = stimmt mit den Zeichenmedien überein wörtlich
    \ s = mit irgendeinem Leerzeichen übereinstimmen [\ r \ n \ t \ f]
    . *?= Jedes Zeichen (außer Newline)
    {= entspricht das Zeichen {wörtlich

Auch können Sie die i verwenden die RegEx Fall unempfindlich (i nur zu machen, ignoriert den Fall von [a-zA-Z ])

Hier sind vier Möglichkeiten der Erkennung @media Regeln RegEx mit:

  1. /^\@media\s(.*?)\{$/
  2. /^\@media\s(.*?)\{$/i
  3. /\@media\s(.*?)\{/
  4. /\@media\s(.*?)\{/i
1

Es gibt keine normale oder perfekte Funktion, um dies zu tun. Zur programmgesteuerten Überprüfung können Sie die Stylesheets für Medienabfragen analysieren.

Also klar sein, es ist nicht empfehlen, es zu verwenden, da Medienabfragen für eine Menge Dinge verwendet werden können.

Wenn Sie es trotzdem versuchen möchten, könnte dies Ihnen helfen: @media ?[^{]+?{.

+1

Sie benötigen nicht unbedingt Medienabfragen, damit eine Website reagiert. Ich denke, eine bessere Antwort wäre einfach "Nein. Das ist nicht möglich". – Turnip

+0

Dies stellt nicht sicher, dass die Website reaktionsschnell ist. Stellen Sie sich sogar 50 oder mehr Medienanfragen vor, aber alle sind leer. –

+0

Sicher, Ihr beide gleich, aber wenn er Lust hat, es trotzdem zu tun, könnte es ihm helfen ... – Boratzan

1

Nein, technisch kann man nicht die Reaktionsfähigkeit mit PHP-Skript überprüfen, da es eine Clientseite Sache ist.

0

Nein! besonders in PHP. Sie können versuchen, CSS für Medienabfragen zu analysieren, oder prüfen, ob Elementgrößen in absoluten Werten festgelegt sind oder nicht.

Meiner Meinung nach ist es so, dass einige Web-Engine Server-Seite laufen, und zwingen Sie es, Seite mit anderen window.width zu rendern, und prüfen Sie, ob sich die Dokumentbreite damit ändert. Solch ein Modul kann von PHP ausgeführt werden, kann aber nicht in PHP ausgeführt werden. - Und wenn Sie keinen dedizierten Server haben, vergessen Sie solche Stunts zu versuchen.

+0

Ich bin gerade darauf gekommen. Während Ihre Antwort alt ist, bin ich neugierig ... Was hat es mit einem dedizierten Server zu tun? – CRAIG

+1

@CRAIG beiseite setzen ganze Sache der Überprüfung der Reaktionsfähigkeit (Parsing für \ @Medien in CSS ist ein guter Indikator, aber nicht die ultimative Antwort, da es noch Stile in HTML eingebettet sein können und Eigenschaften des Objekts von Javascript geändert).Um sicherzugehen, dass Sie Seite (einschließlich laufender js) mit unterschiedlichen Fenstergrößen darstellen müssen (mabe spoofing Benutzer-Agent auch) und prüfen Sie, ob Breite sich richtig änderte. Und es kann nicht in Vanille php getan werden. Und es ist weit außerhalb der Beschränkungen durch Shared-Hosting-Dienste auferlegt. Alles, was weniger als mindestens virtuelle Maschine ist, ist no-go + es ist ressourcenintensiv, so engagiert. – StormRideR

Verwandte Themen