2

インデックスページには、スマートフォン(iPhone、Android、Windows Phone)を使用しているユーザーをモバイルサイトにリダイレクトするスクリプトがあります。私たちが使用する手法は次のとおりです。

if ( navigator.userAgent.match( /iPhone/ ) && ! navigator.userAgent.match( /iPad/ ) ) {
        window.location="mobile.html";
        }
    else if ( navigator.userAgent.match( /Android/ ) && ! navigator.userAgent.match( /Android 3/) ) {
        window.location="mobile.html";
        }
    else if ( navigator.userAgent.match( /Windows Phone/ ) || navigator.userAgent.match( /Zune/ ) ) {
        window.location="mobile.html";
        }

IE9でこれをテストするまで、すべてが完全に機能していました。IE9は、userAgentに上記の文字列が含まれていなくても、何らかの理由でモバイルサイトにリダイレクトされます。IE9のuserAgentは次のとおりです。

Mozilla / 5.0(互換性、MSIE 9.0、Windows NT 6.1、WOW64、Trident / 5.0)

IE8はこのように動作せず、他のプラットフォームも動作しません。スクリプトは正しくありませんか、それともIEはその復讐に満ちたdouchebaggeryで再び攻撃しましたか?ありがとう。

4

3 に答える 3

2

IE9ユーザーエージェントに関するこの投稿によると、IE9は互換モードのときにユーザーエージェントを変更し、「Zune」文字列を含めることができます。Windows Phoneユーザーをリダイレクトするには、別の文字列を使用する必要があるようです。ありがとう。

于 2012-05-08T02:49:20.453 に答える
1

.match()メソッドを使用すると、配列が返されます。配列は空([])であるかどうかに関係なく使用できます。
IEはおそらくそれが式であると考えている[]のでtrue、次のことを行うことをお勧めします。

if(/iPhone/.test(navigator.userAgent) && !/iPad/.test(navigator.userAgent)){
    window.location="mobile.html";
}else if(/Android/.test(navigator.userAgent) && !/Android 3/.test(navigator.userAgent){
    window.location="mobile.html";
}else if(/Windows Phone/.test(navigator.userAgent) || /Zune/.test(navigator.userAgent)){
    window.location="mobile.html";
}

.test()メソッドはtrueまたはを返すだけなので、うまくいくと思いますfalse

于 2012-05-07T00:14:52.450 に答える
0

あなたの答えと助けをありがとう。以下は、Windows8Phoneを使用して私のために働いた

if(/iPhone/.test(navigator.userAgent) && !/iPad/.test(navigator.userAgent)){
    window.location="/mobile";
}else if(/Android/.test(navigator.userAgent) && !/Android 3/.test(navigator.userAgent){
    window.location="/mobile";
}else if(/Windows Phone/.test(navigator.userAgent) || /Zune/.test(navigator.userAgent)){
    window.location="/mobile";
}

window.location = "mobile.html"を、モバイルのindex.htmlファイル用に作成した実際のディレクトリに変更しました

ex. /root directory/mobile
于 2014-02-15T22:41:20.530 に答える