私はこれをしばらく見ていて、明らかな何かが欠けているように感じます...
jQuery mobileを使用してWebアプリのユーザーのダイアログをポップアップし、ユーザーエージェントスニッフィングを使用して、プラットフォームに基づいて選択した場合にアプリのインストール方法をユーザーに指示するクイックダイアログを提供しています。
それは問題ではないように思われるかもしれませんが、私は自分の基地を可能な限りカバーするようにしたいです。最後のifステートメントは、幅が600ピクセル未満で、以前のua文字列のいずれも含まれていないブラウザーに適用されます...したがって、Chromeのデスクトップインストールを減らすと、そのポップアップがトリガーされます。ただし、Chromeでは表示され、すぐに消えます。スローされたエラーが表示されず、Firefoxでエラーが発生していないため、何が発生しているかがわかりません。
2つの質問があります:
1-ここで何が起こっているのか誰か知っていますか?私はfalseを返す場合と返さない場合で試しましたが、これは重要ではないと思いますが、エスケープをテストするためだけです。
2-誰かがこのクリーナーを行うことについての提案がありますか?uaをテストしているので、これをswitchステートメントとして実行することを検討していましたが、テストが正しく機能するかどうかはわかりません...しかし、これに頭を包んでいないように感じます。仕方。
var ua = navigator.userAgent.toLowerCase();
var isAndroid = ua.indexOf("android") > -1;
var isWinPhone = ua.indexOf("windows phone") > -1;
var isBlackberry = ua.indexOf("blackberry") > -1;
var isbbTen = ua.indexOf("bb10") > -1;
var current_width = $(window).width();
$( '#home' ).live( 'pageinit',function(event){
if(isAndroid) {
$.mobile.changePage( '#android' , { transition:"pop", role:"dialog" });
return false;
};
if(isWinPhone) {
$.mobile.changePage( '#winPhone' , { transition:"pop", role:"dialog" });
return false;
};
if(isBlackberry) {
$.mobile.changePage( '#Blackberry' , { transition:"pop", role:"dialog" });
return false;
};
if(isbbTen) {
$.mobile.changePage( '#bbTen' , { transition:"pop", role:"dialog" });
return false;
};
if(current_width < 599 && !isAndroid && !isWinPhone && !isBlackberry && !isbbTen){
$.mobile.changePage( '#generic' , { transition:"pop", role:"dialog" });
return false;
};
});
ここでも同じことが起こります:http://jsfiddle.net/fskirschbaum/2YTwE/1/Chromeで表示した場合。
他のいくつかのパラメーターを試しましたが、そもそもなぜそれが起こっているのか理解できず、どこから始めればよいのか途方に暮れています。