1

こんにちは、ブラウザの検出と Cookie で問題が発生しています。「次回から表示しない」チェックボックスを使用してサイトにアクセスしている iPhone または Android ユーザーにメッセージを表示したいと考えています。私は PHP や Jquery を使うことができないので、厳格な JavaScript に固執する必要があります。次のイベントが発生する必要があります。

Android

場合で、Cookie が設定されていない場合はメッセージを表示します。それ以外の場合
は何もしません

私はコーディングが初めてなので、どんな助けでも大歓迎です。

4

2 に答える 2

0

したがって、次の 2 つのことを達成する必要があります。

1st - ブラウザ検出

JavaScript によるブラウザ検出は難しい作業です。この記事を読んで理解することをお勧めします。

Android と iPhone ブラウザーをキャッチする必要があり、どちらもユーザー エージェントに "mobile" 文字列が含まれているため (すべての適切なモバイル ブラウザーと同様)、次のような関数を使用して実行できます。

function isMobile() {
    return (/mobile/i).test(window.navigator.userAgent);
}

モバイル ブラウザでは、この関数は true を返します。

別のアプローチについては、この質問をご覧ください。

2 番目 - Cookie アクセス

Cookie の「API」はさらに悪いインターフェースです。それに対処するには、key=value データを document.cookie に書き込む必要があります ( MDN のドキュメントを読んでください)。

したがって、Cookie にユーザー設定を保存したい場合は、次のようにすることができます。

document.cookie = "skip_message=1"

前述したように、Cookie API インターフェイスは非常に扱いにくい場合があるため、サードパーティ ライブラリを使用して書き込み Cookie を読み取る必要があります。MDN ドキュメントの小さなフレームワークは優れたものです。

ターゲット ブラウザーにはより高度な機能があるため、古いブラウザーをサポートする必要がない場合は、localStorage を使用することをお勧めします。

于 2012-12-28T16:32:51.867 に答える
0

Cookie を使用することもできますが、Web ストレージの方が使いやすいです。古いブラウザー (IE7 と Opera mini) は Web ストレージをサポートしていない可能性がありますが、iOS サファリと Android ブラウザーの両方がサポートしています

ブラウザ検出 (機能検出を使用する必要があります) に関して、navigatorオブジェクトにはいくつかの有用な属性、つまりuserAgentとが格納されますplatformappNameも利用できますが、役に立たないようです (Chrome 23 では「Netscape」と報告されます)。

ユーザー エージェントから多くを推測するのは難しい作業ですが、

  • Android の既定のブラウザAndroidは、ユーザー エージェントで " " を報告します (参照) 。
  • iOS の場合、ユーザー エージェントでiPad" " と " "を検出するだけで十分なようです(参照) 。iPhone

試す:

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);
}
于 2012-12-28T16:28:13.243 に答える