2012-12-28 62 views
1

嗨我遇到了瀏覽器檢測和cookie問題。我想通過「不再顯示我」複選框向iPhone或Android用戶顯示信息,以訪問我的網站。我不能使用PHP或JQuery,所以我必須堅持使用strait javascript。我需要以下的事件發生:如何爲某些瀏覽器顯示消息(如果尚未設置cookie)

Android是否

如果曲奇尚未設置顯示信息
別的什麼也不做

我是新來的編碼,因此任何幫助,將不勝感激。

+0

爲什麼你不能使用PHP? –

+0

我只能訪問基本的CMS窗口,所以我只能添加特定的代碼。 – Dave

回答

0

您可以使用cookie,但網絡存儲更易於使用。舊版瀏覽器(IE7和Opera mini)可能不支持網絡存儲,但both iOS safari and Android browser do

關於瀏覽器檢測(你應該使用特徵檢測),該navigator對象存儲幾個有用的屬性,即userAgentplatformappName也是可用的,但它似乎並不有用(Chrome 23報告「網景」)。

推斷多從用戶代理是一個棘手的業務,但

  • 而Android默認瀏覽器在用戶代理報告「Android」(ref.
  • 對於iOS,似乎足以檢測「iPad 「和」 用戶代理iPhone「(ref.

嘗試:

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); 
} 
0

所以,你有兩件事情來完成:

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的

相關問題