2016-04-07 47 views
0

是否有類/腳本/可能性來檢查網站的響應式設計?它可能是這樣的:PHP:檢查網站的響應式設計

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

任何想法?

+3

也許你可以掃描他們的'@ media'選擇器的樣式表 – Jer

+1

一種方法是獲取CSS並檢查是否存在媒體查詢。但是再次,媒體查詢可以用於很多事情,你必須解析它們,並確定它們是否實際響應不同的屏幕尺寸。 – Eihwaz

+0

不,因爲'響應性'是客戶端的事情,用於實現'響應性'的技術不僅僅用於爲網站添加'響應性'。 –

回答

7

這樣做有兩種可能*方式:

  1. 您可以使用JavaScript來檢測是否有你的CSS任何媒體查詢然後發送一個真/假變量使用Ajax

  2. 到PHP
  3. 甚至可能使用您的服務器端語言來讀取您的CSS文件,並使用RegEx搜索文件中的任何媒體查詢。

這些方法都不能保證工作,實在是沒有「標準」,「安全」或「非hackey」這樣的方式,你也不能使用服務器端的技術,直接處理媒體查詢。

正則表達式的,你可以用它來搭配@media規則是:

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

    ^=斷言字符串的開始位置
    \ @ =匹配字符@字面上
    媒體=匹配字符媒體字面
    \ s =匹配任何空格字符[\ r \ n \ t \ f]
    。*? =匹配任何字符(除新行)
    {=字符{字面上
    $匹配=在字符串

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

    的端斷言位置\ @ =匹配的字符@字面上
    媒體=與字符媒體字面匹配
    \ s =匹配任何空格字符[\ r \ n \ t \ f]
    。*?=匹配任何字符(除換行符)
    {=字符{字面上

您也可以使用i,使正則表達式的大小寫不敏感匹配(i只忽略[A-ZA-Z的情況下, ])

下面是使用RegEx檢測@media規則四種可能的方法:

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

沒有規律或完美的功能來做到這一點。爲了以編程方式檢查,您可以解析樣式表以進行媒體查詢。

所以要清楚,它的不是建議使用它,因爲媒體查詢可以用於很多事情。

如果您想試試它,可能會對您有所幫助:@media ?[^{]+?{

+1

您不一定需要媒體查詢才能對網站做出響應。我認爲一個更好的答案就是「不,這是不可能的」。 – Turnip

+0

這不能保證網站的響應。想象一下甚至有50個或更多的媒體查詢,但都是空的。 –

+0

確定你的雙方都在那裏,但是如果他覺得無論如何都要這樣做,它可能會幫助他... – Boratzan

1

從技術上說,您不能使用PHP腳本檢查響應能力,因爲它是客戶端的事情。

0

沒有!特別是在PHP中。 您可以嘗試解析CSS進行媒體查詢,或者檢查元素大小是否設置爲絕對值。

在我看來,有一些Web引擎運行服務器端,強制它使用不同的window.width渲染頁面,並檢查文檔寬度是否會隨之變化。這樣的模塊可以從PHP執行,但不能在PHP中完成。 - 如果你沒有專用服務器,忘記嘗試這樣的特技。

+0

剛剛來過這個。雖然你的答案是舊的,但我很好奇......有一個專用的服務器與它有什麼關係? – CRAIG

+1

@CRAIG拋開整個檢查響應性的問題(解析CSS中的@ @media是一個很好的指標,但不是最終的答案,因爲仍然可以在HTML中嵌入樣式,並且從javascript更改對象的屬性)。爲了確保你必須用不同的窗口大小渲染頁面(包括運行js)(mabe也欺騙用戶代理)並檢查寬度是否正確改變。它不能在香草php中完成。遠遠超出共享主機服務所強加的限制。至少少於虛擬機的任何東西都是不合適的+它是非常重要的資源。 – StormRideR