嗨我遇到了瀏覽器檢測和cookie問題。我想通過「不再顯示我」複選框向iPhone或Android用戶顯示信息,以訪問我的網站。我不能使用PHP或JQuery,所以我必須堅持使用strait javascript。我需要以下的事件發生:如何爲某些瀏覽器顯示消息(如果尚未設置cookie)
Android是否
和
如果曲奇尚未設置顯示信息
別的什麼也不做
我是新來的編碼,因此任何幫助,將不勝感激。
嗨我遇到了瀏覽器檢測和cookie問題。我想通過「不再顯示我」複選框向iPhone或Android用戶顯示信息,以訪問我的網站。我不能使用PHP或JQuery,所以我必須堅持使用strait javascript。我需要以下的事件發生:如何爲某些瀏覽器顯示消息(如果尚未設置cookie)
Android是否
和
如果曲奇尚未設置顯示信息
別的什麼也不做
我是新來的編碼,因此任何幫助,將不勝感激。
您可以使用cookie,但網絡存儲更易於使用。舊版瀏覽器(IE7和Opera mini)可能不支持網絡存儲,但both iOS safari and Android browser do。
關於瀏覽器檢測(你應該使用特徵檢測),該navigator
對象存儲幾個有用的屬性,即userAgent
和platform
。 appName
也是可用的,但它似乎並不有用(Chrome 23報告「網景」)。
推斷多從用戶代理是一個棘手的業務,但
嘗試:
if(window.localStorage
&& !localStorage.getItem("dialogShown")
&& /Android|iPad|iPhone/.test(navigator.userAgent)
){
// show the dialog (unhide an element)
}
時,駁回了對話框:
var checkbox /* = document.getElementById(...) */;
if(checkbox.checked){
localStorage.setItem("dialogShown",true);
}
所以,你有兩件事情來完成:
1日 - 瀏覽器Detecttion通過JavaScript
瀏覽器檢測是做棘手的事情,我建議你看看this post瞭解它。
你必須趕上Android和iPhone瀏覽器和他們都在他們的用戶代理「移動」的字符串(如人人享有體面的移動瀏覽器),這樣你就可以像一個功能做到這一點:
function isMobile() {
return (/mobile/i).test(window.navigator.userAgent);
}
該功能將在手機瀏覽器中返回true。
查看this question替代方法。
2日 - Cookie訪問
該Cookie 「API」 是一個更糟糕的接口。要處理它,你必須將你的key = value數據寫入document.cookie(閱讀MDN's documentation)。
所以,如果你想上的cookie存儲用戶的喜好,你可以這樣做:
document.cookie = "skip_message=1"
正如我所說,餅乾API接口,可以非常棘手有時所以你應該使用第三方庫讀取寫入cookie。 MDN文檔中的小框架是一個很好的框架。
目標瀏覽器擁有更先進的功能,因此,如果您並不需要詢問服務舊的瀏覽器,我會建議你使用localStorage的
爲什麼你不能使用PHP? –
我只能訪問基本的CMS窗口,所以我只能添加特定的代碼。 – Dave