13

JavaScriptを使用して、特定のブラウザがフォーカスされた<select multiple>要素をポップアップとしてレンダリングするか、またはインラインボックスとしてのみレンダリングするかを検出する方法はありますか?そのようなAndroidのブラウザとiOSのSafariなど一部のプラットフォームでは、ブラウザが<複数選択>をモーダルダイアログとして表示するかどうかを検出する

、ポップアップの使用が言うの高さを比較することによって検出することができ、

<select multiple> 
    <option>a</option> 
    <option>a</option> 
    <option>a</option> 
    <option>a</option> 
    <option>a</option> 
<select> 

<select multiple> 
    <option>a</option> 
<select> 

高さ<select>がドロップダウンボタンで1つのボックスに縮小されるため、と同じです。しかし、プレイブックブラウザーは拡張された選択リストをレンダリングするため、プレイブックなどの他のデバイスでは、このテストで偽のネガティブが表示されます。は、クリックするとポップアップを表示します。

ネイティブの選択ポップアップが表示されているかどうかを確実に判断する方法はありますか?

+7

なぜこれを検出しますか?そのようなコンポーネントをレンダリングする方法は、クライアントではなく、あなた次第です。非常に具体的な理由がない限り、その行動だけを残すべきです。 – Brad

+1

私はjQuery Mobileを使ってプロジェクトを進めており、jQuery Mobileの[select menus](http://jquerymobile.com/test/docs/forms/forms-selects.html)のプレゼンテーションに代わるものを考え出しています。ポップアップを表示しないブラウザでは、選択肢を表示するネイティブの方法は機能しませんが、2つのスタイル付きのバージョンではパフォーマンスが低下します。ネイティブのポップアップまたは偽のオーバーレイを使用して、ネイティブコントロールを常に使用できるようにしたいと思います。 – kpozin

+1

* select *の* size *オプションに注意してください。これが '1'の場合、ブラウザは要素をインライン要素としてレンダリングすることがあります。 – sergzach

答えて

1

それははこの方にリードしてmasedesignのように見えますが、私はさらに一歩行くつもりです:。

おそらくモバイルブラウザ非モバイルブラウザ(例えばRIM対を検出し、アンドロイド、iOSの、などなどVS FF、クローム、オペラ、サファリ、IE、)

0

jQueryのモバイルベータ2は、あなたの代わりにネイティブなもののカスタムメニューを使用するオプションを提供します:

http://jquerymobile.com/demos/1.0b2/#/demos/1.0b2/docs/forms/selects/index.html

+0

これは最初のアルファリリース以降のオプションです。しかし、上記のコメントで述べたように、問題は、大きなカスタムメニューでは最速のモバイルデバイス(iPad 2など)でもパフォーマンスが低下していることです。そのため、ある種のハイブリッドネイティブ/カスタムの代替案。 – kpozin

+0

完了したら、あなたのソリューションを共有してください!どうも – mynameistechno

関連する問題