皆さん、私はいくつかの洞察をいただければ幸いです。悪名高い「Flash Hogging Keyboard Focus」の問題を調査しましたが、私たちの問題には、他の誰かがすでに遭遇した回避策が含まれている可能性があると思います。私は、stackoverflow や他のサイトで見つけたさまざまな解決策を試しました。以下に要約します。
Web アプリがあり、特定のインターフェイスが「タブ」として使用しているいくつかの div を読み込みます。ユーザーがいずれかのタブをクリックすると、現在の div が非表示になり、新しい div が再表示されます。メイン タブ (ページの読み込み時に読み込まれる) には、Scribd からドキュメントが埋め込まれ、Flash ムービーとして読み込まれます。ユーザーが Flash ムービーをクリックすると、通常どおりマウス/キーボードでスクロールし、ドキュメント コントロールの外側をクリックすると、期待どおりに戻ります。
ユーザーが別のタブに移動してから元のタブに戻り、埋め込み Flash をクリックしてそのタブ内を移動すると、埋め込み Flash がマウス スクロールの制御を奪い、それを放しません。ユーザーはこのドキュメントをクリックして矢印キーでスクロールし、次にドキュメントの外をクリックして矢印キーで親ウィンドウをスクロールできますが、マウスのスクロールは依然として埋め込まれた Flash ムービーにバインドされています。唯一の解決策は、ハード ページの更新です。
ユーザーが新しいタブをクリックしたときに試したこと: 古いタブが「ホーム」の場合、DOM から埋め込み要素を削除します:
saved_element = $('[name="flash_embed_object_name"]').remove();
新しいタブが「ホーム」の場合、要素を DOM に追加し直します。
$('#parent_div').append(saved_element);
これは機能しません。要素が DOM から削除されたことは確認できますが、要素が DOM に戻されると、以前と同じようにクリックするとマウスのスクロールが独り占めします。私も同様の解決策を試しましたが、呼び出した要素を削除する代わりに
$('[name="flash_embed_object_name"]').blur();
と $('#clicked_tab_div').focus();
しかし、これも役に立ちませんでした。他のアイデアはありますか?次に考えたのは、どうにかして Flash ムービーの再生を停止し、ページにフォーカスを戻す必要があるということです。
どんな入力でも大歓迎です。ありがとう!