問題タブ [browser-feature-detection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Javascript を使用して SVG アニメーションと Flash/SVG オブジェクトの表示/非表示を検出するにはどうすればよいですか?
SMIL を使用して SVG アニメーションを作成する実験を行っています。最新の Firefox では問題なく動作しますが、もちろん IE では動作しません。私はすでに同様の Flash アニメーションを持っています。私の計画は、ページに Flash と SVG の両方のアニメーションを含め、javascript の検出に基づいてそれらを表示/非表示にすることでした。しかし、私は JavaScript が苦手で、どうすればよいかわかりません。リンクされた .js ファイルを使用します。私の計画は、ページの読み込み時にブラウザが機能「http://www.w3.org/TR/SVG11/feature#AnimationEventsAttribute」をサポートしているかどうかを検出し、サポートされている場合は Flash オブジェクト (id="rotateFlash) を非表示にすることです。 ") SVG オブジェクト (id="rotateSVG") を表示します。
私が望むものを達成するためのより良い方法があるかどうかはわかりません.また、私が達成しようとしているものに似たコードをオンラインで見つけていません. javascript の表示/非表示を見つけましたが、その機能を検出する実装方法がわかりません。
このコードは少なくとも何かをしているようですが、「else」コマンドに従っているようです。これは、Firefox が機能を「True」として検出していないことを意味していると思います (どちらも IE9 ではありませんが、それは予想されていたことです)。
他に何をすべきかわかりません。他のより単純な SVG 機能を試してみましたが、同じ結果が得られました。Modernizr について読み続けていますが、私には複雑すぎるようです。どうやって、なぜ、うまくいくのかわかりません。
javascript - InternetExplorerのイベントで機能の検出が機能しない
クロスブラウザイベント追加メソッドを作成しようとしていますが、IEではまったく機能しません。コードは次のとおりです。
index.html
helper.js
script.js
javascript - ユーザー エージェント スニッフィングなしで Javascript を使用したネイティブ マウス サポートのないブラウザーを検出しますか?
オブジェクトをターゲットにドラッグして選択する、デスクトップとモバイルの両方のブラウザー用のゲームを作成しています。
ユーザーのブラウザーでドラッグが不可能な場合にのみ、ユーザーはクリックしてオブジェクトを選択できます。
Windows Phone では、すべての画面タッチがブラウザーによって処理され、スクロールが実行されるか、エミュレートされたクリック イベントに変換されます。しかし、Windows Phone にはマウスがないため、ユーザーは Windows Phone ブラウザーでオブジェクトをまったくドラッグできません。
Windows Phone ユーザー エージェントを検出する以外に、これを検出する方法はありますか?
javascript - ブラウザを検出せずに「入力」イベントでバグのある動作を特定する方法は?
質問から始めます。特定のブラウザーにバグのある機能の実装があり、JavaScript が現在のブラウザーにそのバグのある実装があるかどうかを知る必要がある場合、別の戦略を使用できるようになります。ブラウザーの種類のスニッフィングを行わずに、実装にバグがあるかどうかをどのように判断しますか? (これは一般的に悪いと考えられています)?
これが全体の状況です。
フィールドへのユーザー変更の通知を取得するために「input」イベントを使用したいコードに取り組んでいました<input type="text">
(「change」イベントよりもはるかにライブで動作します)が、そのイベントがサポートされていない場合、多くの他の多くのイベントを含むより複雑なスキーム。
「入力」イベントは一部のブラウザーでのみサポートされているため、機能検出は一般的に物事を行うためのより堅牢な方法であるため、イベントの機能検出を (ブラウザーのユーザー エージェントのスニッフィングではなく) 行う方法を探しました。そのため、まさにそれを行うためのこの素晴らしい記事に出くわし、このコードは機能しているようです:
その後、IE で問題が発生しました (驚き、驚き)。IE は「入力」イベントをサポートすると主張しており、上記の機能テストに合格し、ほとんどの場合動作しますが、IE のサポートには非常にバグがあります。ユーザーがバックスペース キーを押しても、イベントはトリガーされません (他の欠落している動作の中でも特に)。そのため、IEでは信頼できません。そのため、「入力」イベントの機能テストを行い、存在する場合は非常にクリーンな実装を使用し、存在しない場合は、他の 8 つのイベントを監視することを含むこの非常に醜い回避策を使用する、このきれいなコードを作成しました。現在、「入力」イベントの機能テストに合格し、コードがそれを使用しようとするため、IE でバストされていますが、非常にバグが多いため機能しません。
これらの IE のバグはユーザーの操作に現れるため、バグのある動作を特定するための JavaScript 機能テストを考案する方法が思い浮かびません。そのため、私の現在の唯一の道は、ブラウザーのスニッフィングに頼ることであり、ブラウザーが IE の場合は "input" タグに依存することを拒否することです。
ブラウザのスニッフィング以外に、「入力」イベントでバグのある動作を特定するためのオプションはありますか? ブラウザのスニッフィングを行う必要がある場合、自由に偽装でき、正確であることが保証されていないユーザー エージェント文字列ではなく、動作によって IE を識別する方法はありますか?
javascript - IE ブラウザを検出するにはどうすればよいですか?
特定の機能を使用できるかどうか、または回避策を使用する必要があるかどうかを判断するために、特定の機能の機能検出を既に行っています。しかし、残念なことに、IE にはその機能にいくつかのバグがあり、それが存在していても役に立たないことがわかりました。したがって、機能の検出に合格しても、ブラウザーが IE であることを検出する必要があるため、IE の場合はその機能を使用しません。
実際のバグのある動作で機能検出を実行できるかどうかを確認しようとしましたが (これは、IE が将来動作を修正する場合に適応するため、最適です)、それを行う方法はないようです (件名別の質問の)。つまり、バグのある機能を回避できるように、それが IE ブラウザーであることを最終的に特定しようとすることになります。 useragent 文字列は簡単にスプーフィングされ、簡単に間違ってしまう可能性があることは誰もが知っているので、私は使いたくありません。
そこで、IE ブラウザかどうかの機能検出を行いたいと思います。
これまでのアプローチは次のとおりです。
これは、attachEvent()
メソッドが存在するかどうか、およびActiveXObject
サポートが存在するかどうかを確認します。attachEvent
OperaはattachEvent
.
これは IE を検出する信頼できる方法ですか? より良い方法はありますか?
I really should do browser detection, but should use feature detection instead. で応答しないでください。私はすでに機能検出を行っていますが、その機能を「サポート」していて機能検出に合格するブラウザーは非常にバグが多く、そのブラウザーで機能を使用できないことが判明したため、問題が発生しました。そこで、バグのあるブラウザを検出する必要があります。
これが使用されている特定の状況について詳しく知りたい場合は、この他の質問に記載されています。
javascript - Modernizrを使用してモバイルデバイスを検出するための最も信頼できる方法は何ですか?
私はレスポンシブサイトを開発していますが、ユーザーがモバイルデバイスでブラウジングしているときに、サイト上のフリーダイヤル番号を固定電話に交換するように求められました。ユーザーがModernizrライブラリ(または他のライブラリ)を使用してモバイルデバイスを使用しているかどうかを検出するための最も信頼できる方法は何ですか?
私はModernizr.touchとModernizr.geolocationを知っています。2つをステートメントで組み合わせるとif(Modernizr.touch && Modernizr.geolocation)
、モバイルデバイスを使用しているかどうかを示す良い指標になりますが、iPadはこれらの両方の属性を真にします。モバイルデバイスがどんどん大きくなっているので、デバイスサイズをテストするのは気が進まない!
誰かがこれに以前に取り組んだことがありますか?
html - 電話機能を検出する方法
主にモバイルデバイスから実行されることを願っているhtml5 Webアプリを構築しています。アプリには電話番号があり、クリックすると表示された番号に電話をかけます。
これは、ユーザーが iPhone や Android などを使用している場合はうまく機能しますが、電話機能のない iPod Touch や iPad を使用している場合はどうでしょうか。XCode の iPhone シミュレーターで、サファリがページを開けないというエラー メッセージが表示されます。
デバイスに電話があるかどうかを検出し、そうでない場合はリンクを無効にすることは可能ですか?
ありがとう
javascript - ブラウザがborder-imageをサポートしているかどうかを判断する正しい方法を実行するにはどうすればよいですか?
border-imageを使用するHTMLアプリを作成しました。
Chromeは常に自動的に更新され、FireFoxは3.5以降で-moz-border-imageをサポートしています。したがって、ほとんどのChromeおよびFireFoxユーザーはこの効果を楽しむことができると言っても過言ではありません。しかし、IEユーザーにとっては、あまり楽しくないが許容できる効果を楽しんでもらいたいと思います。
したがって、ブラウザがJavaScriptを使用してborder-imageをサポートしているかどうかを確認し、ハックを行う適切な方法が必要だと思いますが、その方法がわかりません。
参照: http: //msdn.microsoft.com/en-us/magazine/hh475813.aspx(機能の検出)
javascript - DOMスクロールバーの幅を見つける
垂直スクロールバーと水平スクロールバーのピクセル幅を調べたいのですが。私はそれらが異なるOS/ブラウザによって異なることを知っています。
私はそれを検出しようとするこのコードを見つけましたが、残念ながら、IE7では機能しないようです:
javascript - transtionend / animationendイベントの機能検出?
の実際の名前を機能検出するためのよりクリーンな方法を探していtransitionend
ます。すべてのバリエーションにブルートフォースでハンドラーを追加するだけの例をたくさん見てきました。また、jQuery(または同様のフレームワーク)に依存する必要はありません。
私は基本的にこのリストから始めて、最適なものをバインドすることを望んでいます(つまり、リストの最初に一致する)。
誰もがこれに対するクリーンな解決策を持っていると感じていますか?同じ解決策がおそらくanimationend
イベントでも機能します。
編集: msTransitionEndおよび'-ms-'プレフィックス付きプロパティは、最終的なIE10リリース候補の1つで削除されました。