問題タブ [yepnope]
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.
jquery - IE8 では、最初の試行で iframe 内のリソースをロードしない yepnope
私は jQuery モーダル ダイアログを使用しています。ダイアログ内に iframe を埋め込みました。iframe 包含ボタン「検索結果を表示」
「検索結果を表示」ボタンをクリックしても、最初は何も起こりません。結果がテーブルに表示されません (おそらくサーバー リクエストが起動していません)。
ブラウザの他のタブに切り替えたときにのみ表示され、2回目以降はテーブルが正しくレンダリングされます。
IE8 で __run 関数が初めて呼び出されると、getData (渡された関数) が実行されるはずですが、実行できません。
この問題は IE8 に固有のものです
上記の問題に対処するには?簡単な提案はありますか?
Firefox や Chrome などの他のブラウザでは、すべて正常に動作します。
モーダルフラグをfalseに変更し、[検索結果を表示] ボタンのクリック イベントを最初に試行すると、IE8 で結果が得られますが、モーダル ダイアログが必要なので、これは適切な解決策ではありません。
更新: Jquery UI ダイアログ コードを追加
IE8で生成されたhtmlコードも観察されました
IE8 または yepnope のいずれかで、null 値を持つ onload イベント属性をスクリプト タグ Ex に追加します。
2 回目以降は、yepnope によってロードされたリソースとグリッドに入力された検索結果の onload イベント属性値が変更されます。元。
最善の解決策を願っています。
modernizr - Modernizr Yepnope Css フォールバック
CDN を使用して Bootstrap.css をロードしています。私の質問は、CDN ブートストラップが読み込まれた/見つかったかどうかを確認する方法です。そうでない場合は、ローカルの Boostrap をロードします。
これがJqueryフォールバックです..
そして、これは私がCssよりModernizrをロードする方法です:
css がロードされているかどうかを確認する方法がわかりません.. modernizr と Jquery で行ったのと同じように..
前もって感謝します...
javascript - 実行順序を保持するには?
yepnope 1.5 に関しては、私は彼らのページを読みました:
同じ URL のスクリプトが 2 回実行されることはありませんが、コールバックは正しい順序で実行されます
しかし、実行順序はどうですか?それも保存されていますか?または、ロードの終了時間に依存しますか?
callback
jsファイルを正しい順序で実行する唯一の方法は?
jquery - yepnope を使用した適切なスクリプト読み込みテクニック
そのため、次の 3 つのシナリオに従ってロードする必要がある非常に混乱したスクリプトを作成しました。
- デスクトップ
- モバイル
- モバイル フル サイト (モバイルのデスクトップ バージョン)
true の場合は jQuery Mobile とその他のスクリプト ファイルをロードし、false の場合は特にモバイル以外のスクリプト ファイルをロードするモバイル ブラウザー ( http://detectmobilebrowsers.com/を使用) をテストする yepnope 関数がありました。ただし、これらのファイルが Modernizr の上に強制的に読み込まれることに気付きました。つまり、jQuery の前に読み込まれます。
また、ユーザーがデスクトップ バージョンを表示したい場合にのみ、モバイル デバイスから設定できる Cookie もあります。Cookie が設定されている場合、上記のスクリプトは無視されます。
したがって、基本的に、これらの条件を実装するための最良の方法を見つけるのに苦労しています。
すべてのバージョンで、jQuery、一連のライブラリ、メイン スクリプト ファイルが必要です。
デスクトップ バージョン (およびモバイル フル サイト) には、さらに jQuery UI と非モバイル スクリプト ファイルが必要です。
モバイル バージョンには、jQuery Mobile が必要ですが、jQuery UI は必要ありません。また、いくつかの追加のライブラリと、モバイル用のさらに別の特定のスクリプト ファイルも必要です。
jQuery.browser.mobile
最初に確認してから、true の場合は Cookie を確認する必要があると思います。問題は、PHP ステートメントをスクリプト条件に挿入する際に問題が発生していたことです。次のようになります。
また、上記のスクリプトは、jQuery をロードする yepnope の完全な機能として実行する必要があると思います。
この状況での正しいテクニックを誰か教えてもらえますか?
余談ですが、jQuery Mobile と jQuery UI を一緒にロードするのは本当に悪い習慣なのでしょうか? 前者は、モバイル プラットフォームで後者を (ある意味で) 複製することを意図したものですか? jQuery UI をロードするのは時間の無駄ですか?
更新(以下のコメントを参照):
次の手法を使用して、4 種類のデバイス/デバイスの状態を検出することにしました。デスクトップ、電話、タブレット、および電話のデスクトップ サイト (phonefull)。優れたMobile Detect クラスを使用します。
class
変数は、CSS および JavaScript で簡単に使用できるようにタグにエコーされます<body>
。
デバイス変数を使用するには、通常の PHP の if ステートメントを実行します。
jquery - ページに削除できないインライン jquery コードが既にある場合は、yepnope を使用する
そのため、CMS の上級ユーザー (デザイナー/Web 開発者) は、コンテンツにインライン JavaScript/jQuery コードを追加して、CMS の特定のページで何かを非表示にするなどの特定のこと$(function(){ $('#banner').hide() });
や、その他のより高度なことを行うことができます。コンテンツに追加した入力の jQuery UI 日付ピッカー。
私の質問は、jQuery とそれに依存するプラグインが YepNope (または RequireJS も想定) を介して非同期に読み込まれるかどうかです...そのページに到達すると、jQuery ライブラリが利用できないためエラーが発生します (数マイクロ秒後までロード済み)。
このような既存の Web サイトに YepNope のようなクラス ローダーを導入して、このインライン コードを変更しないようにする最適な方法は何ですか?
私の最善の推測は、CDN/フォールバックが必要な場合は、HTMLBoilerplate のように同期的にロードすることです (または、CDN フォールバックが必要ない場合は、script タグを介して通常どおりロードするだけです)。
そして、ページで使用する必要のない他のものにのみ yepnope ローダーを使用しますか?
または、yepnope の読み込みが完了するまでインライン スクリプトの実行を遅らせるためのトリックを実行できますか?
javascript - modernizr.js / yepnope.js を使用して Google Maps API をロードする
modernizr.load または yepnope を使用して Google Maps API をロードできるようにする作業コードを持っている人はいますか?
modernizr を使用して JQuery と GMap3 をロードできますが、従来のスクリプト タグを作成しない限り、Google Maps API は機能しません。
スクリプトタグを削除した後、次の変更を行う必要があることをロジックは教えてくれます:-
しかし、この変更を行うと、マップが読み込まれず、Javascript コンソールに次のエラーが表示されます:-
jquery - AJAX 呼び出しでエッジ アニメーションを読み込むにはどうすればよいですか? jquery getScriptが失敗する
したがって、jQuerys $.getScript() を介して Edge アニメーションを取得しようとしています。これは、dataType: script で $.ajax を呼び出すのと同じです。
script タグを使用してスクリプトを含めると正常に動作しますが、$.getScript() を使用してスクリプトを読み込んで実行しようとしても何も起こりません。(エラーは発生せず、スクリプトとサブスクリプトは正常にロードされますが、何も起こりません。)
誰もこれを試したことがありますか?Adobe は page_a_edgePreload.js で yepnope を使用しているため、AJAX 経由での読み込みに問題があると思われます。
テスト目的で、Adobe Edge から見つけた簡単な例を使用しました。ローカルで試してみたい場合は、エディターを開き、以下を wrapper.html ファイルに保存します。
次に、Adobe からサンプルの .zip ファイルをダウンロードします: http://blogs.adobe.com/edge/files/2012/05/an15BootStrapExample.zip
以下を wrapper.html と同じフォルダーに抽出します。
- edge_includes フォルダー
- page_a_edge.js
- page_a_edgeActions.js
- page_a_edgePreload.js
編集
わかりましたので、Alex が提案したように、edgePreloader.js を経由せずにファイルを読み込んでみました。AdobeEdge にアクセスできますが、スクリプトを正常に読み込んだ後にコンポジションを書き出すと、undefined が返されます。
(私も setTimeout() 関数でこれを試しました - それでも同じ結果です)
<script src="..edgePreloader.js"></script>
通常のタグにスクリプトを含めると、次のようにうまく動作します
Adobe が edgePreload.js でクロージャーを使用していることに気付きました。このクロージャー内に edge.1.5.0.js をロードする必要があるようです。私は今、この閉鎖を機能させるために不可欠なイベントと機能を理解しようとしています。