Как заставить детское окно оставаться на вершине?

Я использую window.open открыть дочернее окно из родительского окна. Я хочу, чтобы дочернее окно оставалось сверху, чтобы пользователь мог ссылаться на него, делая запись в родительском окне. Можно ли это сделать? Сейчас я использую Firefox, но было бы неплохо, если бы он работал во всех браузерах.

6 ответов

Решение

Как насчет использования всплывающего div вместо открытия нового окна?

Этот всплывающий слой также хорош: DOMWindowDemo.

Да, вы можете сделать это с помощью кода, который вы даете onBlur="self.focus()" в теле для дочернего окна

    //Parent page...
    <html>
      <body>
      <a href="#" onClick="window.open('two.html','sdvwsv','width=200,height=200');">here...</a>
         </body>
     </html>


   //Child page...
         <html>
          <body onBlur="self.focus();">
               here...
              </body>
          </html>
<html>
    <script language="JavaScript">
    <!--
    function openWin(){
      var myBars = 'directories=no,location=no,menubar=no,status=no';

      myBars += ',titlebar=no,toolbar=no';
      var myOptions = 'scrollbars=no,width=400,height=200,resizeable=no,top=10, left=10,';
      var myFeatures = myBars + ',' + myOptions;
      var myReadme = 'This is a test.'

      var newWin = open('', 'myDoc', myFeatures);

      newWin.document.writeln('<form>');
      newWin.document.writeln('<table>');
      newWin.document.writeln('<tr valign=TOP><td>');
      newWin.document.writeln('<textarea cols=45 rows=7 wrap=SOFT>');
      newWin.document.writeln(myReadme + '</textarea>');
      newWin.document.writeln('</td></tr>');
      newWin.document.writeln('<tr><td>');
      newWin.document.writeln('<input type=BUTTON value="Close"');
      newWin.document.writeln(' onClick="window.close()">');
      newWin.document.writeln('</td></tr>');
      newWin.document.writeln('</table></form>');
      newWin.document.close();
      newWin.focus();
    }
    -->
    </script>
    <body>
    <form>
      <b>Click the following button to open a new window: </b>
      <input type=BUTTON value="Open" onClick='openWin()'>
    </form>
    </body>

Я боролся с этим в течение длительного времени. Кажется, это ошибка в FF, но я заметил, что после открытия нового окна, если я нажимаю на него, оно получает фокус и достигает вершины. Однако вызов метода window.focus() не сработал, поэтому я догадался, что это происходит слишком рано.

Так что в новом коде окна, внизу страницы я добавил

setTimeout(function(){window.focus()},100);

Это не похоже на твердую практику, но если вам нужно, чтобы она работала... 100 мсек, кажется, самая низкая, которая работает в моей системе.

<html>
    <script language="JavaScript">
    <!--
    function openWin(){
      var myBars = 'directories=no,location=no,menubar=no,status=no';
      myBars += ',titlebar=no,toolbar=no';
      var myOptions = 'scrollbars=no,width=600,height=400,resizeable=no,top=10, left=10';
      var myFeatures = myBars + ',' + myOptions;
      var newWin = open('test.html', '', myFeatures);
      newWin.document.close();
      newWin.focus();
    }
    -->
    </script>
    <body>
    <form>
      <b>Click the following button to open a new window: </b>
      <input type=BUTTON value="Open" onClick='openWin()'>
    </form>
    </body>
</html>
    </html>
Другие вопросы по тегам