php
  • javascript
  • cookies
  • 2011-09-07 53 views 0 likes 
    0

    我試圖將這個:http://adaptive-images.com/轉換成網站。 它將依靠JS-Cookies來獲得屏幕分辨率,以便適應圖像大小的PHP腳本知道要傳遞的分辨率。 不幸的是,它以某種方式無法設置cookie(並回落到480分辨率...),我不知道爲什麼。它所做的只是:Javascript cookie not generated

    <script type="text/javascript"> 
    document.cookie='resolution='+Math.max(screen.width,screen.height)+'; expires=; path=/'; 
    </script> 
    

    權限在文件的頭部。然而,cookie似乎從未被設置,我只會看到(他們應該出現在Chrome DevTools的資源部分,對吧?)GoogleAnalytics創建的cookie(然而,這似乎不是問題,因爲刪除GA使得沒有不同)。

    我以前從未使用過JS cookies,但是從我在網上可以看到的語法看來,這個語法似乎很完美,而且我也沒有在控制檯或其他地方得到任何類型的錯誤消息,它似乎忽略了cookie設置操作。

    長話短說:我不知道這裏發生了什麼事?

    謝謝!

    編輯:也許這是一個PHP邊的問題,所以我也會添加這部分。 會發生什麼情況如下:

    第一關:

    $resolutions = array(1920,1382, 992, 768, 480); 
    

    然後:

    if (is_numeric($_COOKIE['resolution'])) { 
        $client_width = (int) $_COOKIE["resolution"]; 
    
        rsort($resolutions); 
        $resolution = $resolutions[0]; 
    
        foreach ($resolutions as $break_point) { 
         if ($client_width <= $break_point) { 
         $resolution = $break_point; 
         } 
        } 
        } 
    

    然而,該腳本將跳投返回一個480的分辨率,即使我的屏幕是1920?至於我得到的代碼,它應該是返回1920年,所以我想它似乎使用後備案件$_COOKIE['resolution']未設置,這將回到480.

    回答

    2

    不設置過期時間使您的cookie會話cookie,所以它只能持續瀏覽器會話的生命週期(它不會寫入磁盤)。

    除此之外,您的cookie似乎適用於我。當我在jsFiddle中使用該代碼並在Cookie調查器中查看Chrome調試器時,我看到cookie字符串中包含一個用於解析的項目,並將其標記爲會話cookie,而不是永久cookie。

    也許你可以描述你如何閱讀cookie?

    我發現你要在客戶端上設置cookie,以便服務器在該域名上請求NEXT頁面之前不會看到cookie。服務器不會在第一頁看到它。這可能是你的問題嗎?

    +0

    謝謝,不知道會話cookie沒有出現在調試器!我在問題中加入了PHP。 – m90

    +0

    會話cookie在我的Chrome調試器中顯示。我不知道PHP,所以我不能評論你的PHP。 – jfriend00

    +0

    不過謝謝! – m90

    相關問題