問題タブ [polyfills]
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 - document.elementFromPoint(x,y) - 純粋な JavaScript の代替?
一部の Android デバイス (ネイティブ ブラウザー)elementFromPoint()
では、多くの状況で CSS プロパティを使用する と、正しい要素の親 ( を持つもの) を返すように壊れます。overflow:auto
overflow:auto
ネイティブ関数に似ているが、JavaScript で記述された、その関数の完全で高速な置換/ポリフィルはありますか?
プロパティは認識していoffsetXXXXX
ますが、スクロールと位置/オーバーフローの CSS 設定を追加すると、複雑になってきます...
key - インライン キーを使用した IndexedDB、Web SQL へのポリフィル、更新を許可するキーを取得する方法は?
IndexedDB shim を Web SQL に使用すると、レコードを更新できませんでした: https://github.com/axemclion/IndexedDBShim
IDBWrapper も使用しています: https://github.com/jensarps/IDBWrapper
私はこれらのライブラリを使用していますが、私の質問は依然として適切である可能性があり、IndexedDB と Web SQL の一般的な使用法に関連している可能性があるため、適切にアドバイスされる可能性があると考えています。
インライン キーを使用して、IndexedDB ストレージを実装しています。
オブジェクトをストアに保存すると...
...自動インクリメントキーを生成し、このキー値を「keyPath」プロパティにちなんで名付けられたオブジェクトに自動的に保存します。この場合はPersonIdです。
これはうまくいきます。Chrome で IndexedDB ストレージを調べると、2 つの列があります。キー (キー パス: 'PersonId') と値 (オブジェクトを含む)。
同じオブジェクトを更新したい場合は、PersonIdという名前のプロパティが含まれていること、および保存したいキーと同じ値を持っていることを確認するだけで、更新されます。
ただし、Web SQL に保存する IndexedDB shim を使用する場合 (Windows の Safari やモバイル ブラウザーなど)、オブジェクトを読み込むと、PersonIdプロパティがまったく含まれません。
参考までに、_loadPersons
コールバックは次のとおりです。
Safari で Web SQL ストレージを調べると、キー (1-0、1-1、1-2 の形式)、inc (1、2、3)、および値 (JSON を含む) の 3 つの列があります。オブジェクトの文字列、PersonIdプロパティがありません。
インライン キー機能が IndexedDB でどのように機能するかはわかりませんが、それが何であっても、Web SQL では発生しないようです。
このアプローチを使用する場合、更新したいオブジェクトをどのように参照すればよいですか?
規格外のキーを使用する必要がありますか?
他の誰かが IndexedDB -> Web SQL 構造を実装しましたか?もしそうなら、彼らはどのライブラリを使用し、この問題に遭遇しましたか?
アップデート:
IndexedDB polyfill: http://nparashuram.com/jquery-indexeddb/example/を使用した Indexed DB JQuery プラグインの例の背後にあるコードを見てきました。ただし、この例では、すべてのアイテムに既に「itemId」があり、新しいアイテムを追加するためのロジックはなく、既存のアイテムを別の場所 (カート、ウィッシュリスト) に移動するだけなので、このアプローチは「アウトオブラインキー」アプローチ。
更新 2:
IndexedDBShim と IDBWrapper を使用できるようにするために、状況を解決した方法については、以下の回答として詳しく説明します。ただし、おそらくより良い解決策は、これら 2 つのライブラリを捨てて、別の方法を試すことです。
javascript - Javascript を使用してスタイルシートに動的にスタイルを追加すると、「未定義のプロパティ '長さ' を読み取れません」というエラーが表示される
私は現在、Internet Explorer などの古いブラウザーが従来の css セレクターを使用してメディア クエリを読み取って実行できるようにする独自のポリフィルを作成しようとしています。プロセス フローは次のようになります。
- ドキュメント内で見つかった各スタイルシートを反復処理します
- メディア クエリを検索するスタイルシートの各スタイル ルールを実行します。
- ターゲットとするデバイスのサイズを定義し、適切な「id」を適用します
- セレクター付きの css 行を既存のスタイルシートに動的に追加する
アイデアは、ポリフィルがメディア クエリを検索し、デバイス サイズに対応するボディに親の「id」を適用するというものです。たとえば、次のようになります。
これまでのJavaScriptは次のようになります。
現在、CSSルールをスタイルシートに追加しても、すべてが思い通りに機能していますが、このエラーが発生し、どの時点で完全にわかりません:
この行への関数呼び出しを削除すると、エラーは発生しません。
そのため、関数呼び出しと読み取り中に何が起こっているのかわかりません.length
私のhtmlは次のようになります。
全体として、プロパティの長さを読み取れない理由と、addCSSRule
関数呼び出しの何がエラーを引き起こしているのかを理解する必要があります。
javascript - geo-uri-support の検出
クライアントブラウザがGEO-URI-scheme をサポートしているかどうかを JavaScript で確認する方法はありますか?
サポートされていないブラウザの座標を地図へのリンクとして表示したい
サポートされているブラウザー (スマートフォンなど) の場合は、独自のネイティブ アプリへのリンクとして表示されます。
css - CSS3 アニメーション プログレスバー IE9 ポリフィル CSS3Pie
Web ページに簡単なプログレス バーを作成しようとしています。次のようにコードをセットアップしました。
そして私のcssは次のようになります:
これにより、次のような進行状況バーがあります:
私のコードはここから入手できます: http://jsfiddle.net/Misiu/BhRtQ/
今やりたいことは、IE9に対応させることです。
グラデーションにはCSS3PIEを使用する予定ですが、その進行アニメーションを行う方法がわかりません。
これをIE9で見栄え良くするにはどうすればよいですか?
私の最初のアイデアは、IE9 でアニメーション gif を背景として使用することでしたが、これは外部画像なしで完全に作成できるのでしょうか?
CSS3Pie の背景をアニメーション化できますか?
編集:これ
が私の一時的なバージョンです: http://jsfiddle.net/Misiu/BhRtQ/9/
jQuery animate を使用して背景位置をアニメーション化しています。
javascript - dart2js で JavaScript ポリフィルを使用する方法
Javascript にコンパイルされた Dart コードでindexedDBポリフィルを使用したいと考えています。必要なスクリプトを追加したところ、dart2js コードはwindow.indexedDB
プロパティを IDBFactory インスタンスとして認識せず、UnknownJavaScriptObject
インターセプターを生成します。
で始まるポリフィルの要素にconstructor.nameを強制しようとしましたindexedDB
:
一歩前進、インターセプターは正しかった。残念ながら、IDBOpenDBRequest に類似の構造を追加すると、そのオブジェクトは IDBFactory インターセプターも取得しました。
オブジェクトとインターセプターを正しく接続するには?
javascript - vminpoly が ie8 以下で機能しないのはなぜですか?
使用しようとしているのは、新しい vw ユニットのポリフィルです。私の質問は、なぜ ie8 以下で動作しないのかということです。開発者は、すべてのブラウザー ie5 - 8 がサポートされていると言っています... Opera mini を含む...
これはスクリプトへのリンクです。デモが含まれています https://github.com/saabi/vminpoly
なにが問題ですか?なぜこれが機能しないのですか?
jquery - Angular アプリで webshims ポリフィルを使用する
依存関係管理にrequirejsも使用しているAngularアプリでwebshimsポリフィルを使用しようとしています。特定のボタンまたは入力がどのフォームに属しているかをブラウザに伝えるおよびのform
ようなフォームフィールドに属性がないことをシムしようとしています。IE9 にはこの機能がありません。input
button
このポリフィルを使用する最善の方法は、フォーム ディレクティブを作成し$.webshims.polyfill('forms')
、リンク関数内で呼び出すことであると考えました。
これが私が現在 webshims ポリフィルをロードしている方法です:
私のRequirejs構成問題は、シムがロードされ、正しい関数を呼び出しても、IE9 にはまだ HTML5 フォーム属性 (プレースホルダー、フォーム属性など)に問題があるため、シムが機能していないように見えることです。
ここで何が欠けていますか?
javascript - phantomjs で動作する document.register のポリフィルはありません
次の Web コンポーネントまたはカスタム要素を作成しているとします。
( github の polyfill ) これは Chrome で動作します。しかし、これを PhantomJS で実行しようとすると、次のエラーが発生します。
再現したい場合は、ここに私のphantomjsスクリプトがあります
私は他のポリフィルを試しました
しかし、実際にはどれも機能しませんでした。これを修正する方法はありますか?