3

slidejsを使用して、javascript スライダーで複数の soundcloud html5 ウィジェット (iframe) を使用しようとしました。

IE を除くすべてのブラウザで、ウィジェットを問題なくスライドできます。IE9 では、最初のスライドのウィジェットのみが表示され、他のウィジェットはなぜか非表示になっています。スライダーの例を見つけることができます。

ページをリロードした後、「次へ」をすばやくクリックすると、すべてのウィジェットが表示されることがわかりました。

コンソールに次の 2 つのエラーが表示されます。

"HTML1115: X-UA-Compatible META tag ('IE=edge,chrome=1') ignored because document mode is already finalized."

"?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F56094476&show_artwork=false
SCRIPT5009: 'Object' is undefined 
widget-ab572693.js, line 1 character 6728"
4

1 に答える 1

2

IE9には、DOM から切り離された iframe が JavaScript ランタイム環境にアクセスできないようにするバグ/セキュリティ機能(リンクの有効期限が切れています。更新を参照) があります。Objectそのため、ウィジェットの JavaScript 評価時には、コンストラクターなどの基本的なものStringは使用できません。

Slidejs プラグインは、スライドの div のコンテンツを切り離しています (スライドのコンテンツをwrapAll効果的に削除して再添付している jQuery 呼び出しを確認できます)。私は、slidejs の初期化が完了した後にのみ iframe を読み込もうとしましたが、iframe コンテナーのdisplayCSS プロパティを設定するだけでnone、IE9 で iframe が表示されなくなります。これは、IE9 が iframe を処理する方法に関する別の問題です。

もう 1 つの方法は、スライドが表示された後にのみウィジェットの iframe を初期化することですが、残念ながら、slidejs はそのイベントのコールバック API を提供していません。

したがって、私の提案は、同じ機能を提供するが、表示されているスライドに iframe を作成できる別のプラグインを試すか、または をposition:absolute;left:-9999px使用する代わりにスライドを非表示にすることでこれにパッチを当てることdisplay:noneです。

これが役立つことを願っています!

UPD。MSDN はそのリンクのコンテンツを「移動」 (または削除) しました。その記事の Wayback マシン リンクはhereです。

于 2012-11-26T16:53:55.883 に答える