2013-03-19 107 views
0

PHP腳本可以傳遞Javascript收集的值嗎?PHP傳遞由Javascript收集的值

我只是想,如果Javacript可以捕獲用戶的屏幕分辨率,我可以使用該值來運行PHP(IF和Else函數)來加載某個PHP文件?

有一個明確的解釋,

  1. 的JavaScript會檢測用戶的屏幕分辨率。
  2. 確定屏幕分辨率後,PHP腳本將加載 正確的php文件。
  • IF屏幕分辨率是大於1200,顯示PHP文件編號1
  • IF屏幕分辨率低於1920時,顯示PHP文件號2
  • IF屏幕分辨率小於1200 =顯示PHP文件3

順便說一句,我忘了提及PHP文件只是一個網頁的一小部分。我們假設php文件是頭文件。 PHP文件#1,#2和#3有不同的設計和谷歌廣告裏面。

PHP#1 &#2具有728px寬度谷歌AdSense廣告 而PHP#3有一個300像素寬度谷歌AdSense廣告

這可能嗎?非常感激你的幫助。非常感謝你! :)

+2

你可以使用AJAX。一旦JavaScript獲得了屏幕分辨率,就發送一個請求到一個頁面,該頁面將生成重新調整後的輸出。 – user829323 2013-03-19 15:32:24

+1

這是可能的,但根據經驗,UX或前端設計應該留給客戶端語言。 – Emissary 2013-03-19 15:33:41

+1

爲什麼不使用CSS媒體查詢並保留所有客戶端?我假設你是爲了佈局的目的而這樣做的。 – 2013-03-19 15:35:08

回答

1

你不必爲它使用PHP。

也許這樣的事情?:

if ((screen.width>=1024) && (screen.height>=768)) 
{ 
window.location="highres.html"; 
} 
else 
{ 
    window.location="lowres.html"; 
} 

如果必須使用PHP,你可以做一個簡單的Ajax調用。

1

當然這是可能的。首先加載包含獲取分辨率的腳本的頁面,然後使用POST或GET發送值,然後返回所需內容。

我建議使用一些ajax,否則如果頁面加載兩次,可能會令用戶感到不安。

1

您可以通過兩種方式做到這一點:

  • 通過JavaScript,決定該文件根據結果
  • 結果發送到PHP(GET OT POST)加載,並讓它決定做什麼(AJAX或重定向)

總之,PHP是不是真的需要

0

可以加載使用jQuery腳本的網頁,並有PHP返回正確的HTML文件。 然後調用是這樣的:

$.post("page.php", {sel:"cond1", dpiy: dpi_y, dpix: dpi_x}, function(j) 
{ 
    //load form 
    $("#ext_page").html(j); 
}); 
0

其他的答案集中在AJAX其中 - 幾AdSense廣告的目的 - 雖然清潔,可能會比實際需要更復雜的解決方案 - 爲求完整性,有一個便宜又簡單的選擇:首先將所有內容轉儲到頁面上,然後決定如何處理它。

例如。在你的HTML:

<div id="ADgt1200" style="display:none;"> 
    <!-- adsense code--> 
</div> 
<div id="ADgt1920" style="display:none;"> 
    <!-- adsense code--> 
</div> 
<div id="ADlt1200" style="display:none;"> 
    <!-- adsense code--> 
</div> 

然後在你的Javascript:

//pseudo 
if(whatever.width > 1200) 
    document.getElementById('ADgt1200').style.display = 'block'; 
else { /* etc... */ } 

在回答您的評論:

這只是一種原始的例子,同樣的原則也沒有您無法將adsense代碼存儲在javascript變量中的原因...

<script> 
    var myAdsense = [ 
     'gt1200': '<adsense/>', 
     'gt1920': '<code/>', 
     'lt1200': '<block/>' 
    ]; 

    window.onload = function(){ 
     if(whatever.width > 1200) 
     document.getElementById('myEl').innerHTML = myAdsense['gt1200']; 
     // etc. 
    }; 
</script> 
<div id="myEl"></div> 

...因此,沒有任何代碼實際上被加載到DOM中,除非你這麼說。

+0

抱歉,但不幸的是,這將無法正常工作。 AdSense允許每頁最多3個廣告。如果我這樣做,該網頁將自動加載3個AdSense廣告。用戶只能看到1個,隱藏其他兩個。我的網頁帶有3個谷歌廣告,它們都產生了可觀的收入。 – 2013-03-19 17:42:55

+0

@KareenLagasca有方法和手段......它絕對可行。已更新答案。 – Emissary 2013-03-19 18:15:18

+0

不要誤解我的意思,AJAX非常棒,但它並非絕對必要 - 我沒有看過AdSense代碼,但它確實是以某種一致的格式,甚至可以隨時構建正確的代碼? – Emissary 2013-03-19 18:18:53

0

我猜這不是隻有一個頁面,你想把這個邏輯。這是我會做的:

  1. 檢查屏幕分辨率是否可用$ _SESSION ['screen-res']。如果不是,則將瀏覽器重定向到「check-screen-res.php」。這個PHP文件應該有相關的javascript代碼來檢測屏幕分辨率,然後使用變量'screen-res'將其存儲在會話中。

  2. 如果你的會話中有屏幕顯示,那麼你很好。只需使用它來包含你想要的任何PHP文件。

當然,如果用戶在他的網站上更改了他的分辨率,該策略將不起作用。在檢測到屏幕分辨率變化的情況下,您可以通過提高適當的事件來解決這個問題;如果是這樣,請相應地更新您的會話變量,等等。

希望這會有所幫助。讓我知道如果這是你想要遵循的策略,我會很高興用一些php/javascript代碼更新這個線程。