8

いくつかのボタンを含む IFrame があります。ボタンがクリックされると、親 DOM が操作されます (すべて同じドメイン内にあるため、同一オリジン ポリシーについて心配する必要はありません)。

ユーザーがボタンをクリックしたため、フォーカスは IFrame に移動します。ただし、フォーカスを親ドキュメントに戻したいと思います (主にこの FireFox の問題が原因です)。

これどうやってするの?

編集:問題を示すjs-fiddleを作成しました。親フォーム要素で呼び出すと機能するようにfocus()見えますが、一般的には機能しません。js-fiddle からわかるように、親ドキュメントにはフォーム要素がありません。

4

2 に答える 2

4

フォーカスを iframe の内側から外側のウィンドウに戻したい場合、外側のウィンドウ自体にフォーカスを当てても、ユーザーに視覚的なフィードバックを与える可能性は低いため、外側のページにある既知のフォーム要素にフォーカスすることをお勧めします。

これは次のように行うことができます。

outer.html

<html>
  <head>
    <title>Outer</title>
  </head>
  <body>
    <iframe id="iframe" src="inner.html">
    </iframe>
  </body>
</html>

inner.html

<html>
  <head>
    <title>Inner</title>
  </head>
  <body>
    <form id="innerForm">
      <input type="button" id="innerButton" value="Inner button" />
    </form>
  </body>
  <script type="text/javascript">
    // When we click the inner button...
    document.getElementById('innerButton').addEventListener('click', function() {
      /*
       * Do whatever you need to do here
       */

      // Focus the parent
      parent.focus();
    });
  </script>
</html>
于 2012-05-08T16:45:34.290 に答える
0

ページに要素を作成し、フォーカスが IFrame に設定された後のある時点でこれを呼び出します。

document.getElementById("myElementId").focus(); 

これにより、フォーカスが本文に戻り、IFrame から外れます。

于 2012-05-08T16:03:27.027 に答える