所以我需要檢測使用modernizer的webp支持,然後根據結果的結果在PHP中做一些處理。檢測功能支持與modernizer和PHP的基礎上結果
現在開始我以爲我可以設置一個cookie,並使用PHP,像這樣得到的cookie:
JS:
Modernizr.on('webp', function (result) {
if (result) {
setCookie("webpissupported", "yes", "365");
}
});
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
var expires = "expires="+d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
PHP:
$userAvatar = um_get_avatar_uri(um_profile('profile_photo'), 190);
$patterns = array("/.jpg/", "/.jpeg/", "/.png/");
if (isset($_COOKIE['webpsupport']))
$userAvatar = preg_replace($patterns, "_result.webp", $userAvatar);
現在用的問題上面的代碼是我使用wordpress插件w3總緩存,啓用頁面緩存。這導致cookie被緩存併產生意想不到的結果。
於是我想也許我可以做這樣的事情:
<script type="text/javascript">
Modernizr.on("webp", function (result) {
if (result) {
<?php $webpSupport = true; ?>
}
});
</script>
但是,這是行不通的。
任何人都知道我可以解決這個問題。
問題是他們的順序錯誤。 PHP首先運行,創建頁面,將其發送到瀏覽器,然後Modernizer運行。做到這一點的唯一方法是讓PHP發送運行Modernizer的頁面,然後將頁面作爲表單提交回去。 – Barmar
@Barmar嗨,你有一個粗略的例子來說明如何做到這一點。謝謝您的幫助 :) –