2017-08-24 8 views
0

多くの携帯電話のAndroid Androidブラウザは、Googleのアプリ(Angular 1で構築)で動作していないことがわかりました。 Polyfillsはそれを修正していないし、現在の解決策はこのブラウザを検出し、基本的に「Android上のFirefoxとChromeで動作するアプリです」というページにリダイレクトすることです。Android Androidブラウザとリルート(JavaScript)の検出

私の現在の方法は、唯一の問題は、それが機能していないということです

<script> 
    var isAndroid = navigator.userAgent.indexOf('Android') >= 0; 
    var webkitVer = parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.appVersion)[1], 10); 
    var isAOSP = isAndroid && webkitVer <= 534 && navigator.vendor.indexOf('Google') == 0; 

    if(isAOSP){ 
     window.location = "/views/compatibility/compatibility.html"; 
    } 
</script> 

他のすべての負荷の前に、私たちのHTMLの頭の中でこのスクリプトを入れています。私はbrowserstack上でHTC M8を使ってテストしましたが、まだリダイレクトしていない、壊れたフロントページに私たちをロードしています。

if (isAOSP == false)...を変更すると、私のデスクトップのような互換性がある間にリダイレクトされるため、スクリプト自体が機能するはずです。私は変数に何か間違っていると思っていますが、皆さんに提案があるかどうか尋ねたいと思っていました。

は)=ありがとう

編集:ソリューションは、デバッグすることで、ユーザJaromanda Xに感謝を見つけるのは簡単で、かつ簡単だった、私はブラウザは、私が小さい534を超えるものを評価したところ、WebKitのバージョン537を使用していたことがわかりましたリダイレクトには537への変更が許可されています。

+0

ので、あなたがそれを期待するとき、 'isAOSP'は、偽であると判断しました真であることは、他の条件の1つが偽であることを意味します。だから、 'isAndroid'はどうですか?trueかfalseですか? 'webkitVer' <= 534またはそれは> 534ですか? 'navigator.vendor.indexOf( 'Google')' 0は何ですか? –

+0

楽しいため、デスクトップを使っている間に実行時にconsole.log()を使って変数を実行することを確認しました。 'isAndroid:false; WebkitVer:NaN; isAOSP:false' これは私がデスクトップから期待しているものです。エミュレートされたAndroid搭載端末で同じチェックアウトを実行するためのヒント私が知る限りでは、エミュレートされたデバイス上のコンソールをチェックする方法はありません(about:デバッグは私にとってはうまくいかず、リモートデバッグをエミュレートできません) –

+0

そのコードを使ってページに何かを出力する、divなどのコンテンツを言う –

答えて

0

ユーザーJaromanda Xがコメントしたように、我々はこれが最終的なコードは次のように見えたものである534を超える検出するために、私たちのコードを変更:

var navU = navigator.userAgent; 
    // Android Mobile 
    var isAndroidMobile = navU.indexOf('Android') > -1 && navU.indexOf('Mozilla/5.0') > -1 && navU.indexOf('AppleWebKit') > -1; 
    // Apple webkit 
    var regExAppleWebKit = new RegExp(/AppleWebKit\/([\d.]+)/); 
    var resultAppleWebKitRegEx = regExAppleWebKit.exec(navU); 
    var appleWebKitVersion = (resultAppleWebKitRegEx === null ? null : parseFloat(regExAppleWebKit.exec(navU)[1])); 
    // Chrome 
    var regExChrome = new RegExp(/Chrome\/([\d.]+)/); 
    var resultChromeRegEx = regExChrome.exec(navU); 
    var chromeVersion = (resultChromeRegEx === null ? null : parseFloat(regExChrome.exec(navU)[1])); 
    // Native Android Browser 
    var isAndroidBrowser = isAndroidMobile && (appleWebKitVersion !== null && appleWebKitVersion <= 537) || (chromeVersion !== null && chromeVersion <= 38); 

    //If isAndroidBrowser, redirect 
    if(isAndroidBrowser){ 
     window.location = "/views/compatibility/compatibility.html"; 
    } 
関連する問題