Как сделать так, чтобы дочернее окно оставалось сверху?

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


person Andrew Fox    schedule 20.12.2012    source источник
comment
Вы можете сфокусироваться на новом окне, но тогда вы не сможете печатать или делать что-либо в родительском окне.   -  person Derek 朕會功夫    schedule 20.12.2012
comment
Как насчет использования всплывающего блока вместо открытия нового окна?   -  person 3dgoo    schedule 20.12.2012
comment
Это лучшее, что вы можете сделать с окнами: jsfiddle.net/DerekL/WFsyY   -  person Derek 朕會功夫    schedule 20.12.2012
comment
+1 за идею всплывающего блока div, это очень круто. Мое дочернее окно открывает страницу php, и эта страница извлекает данные из базы данных mysql. Будет ли для этого работать всплывающий элемент div или это может быть только текстовая или статическая информация?   -  person Andrew Fox    schedule 20.12.2012
comment
@AndrewFox - всплывающий элемент div похож на обычный элемент div HTML. Он может содержать все, что вы хотите.   -  person Derek 朕會功夫    schedule 20.12.2012
comment
@3dgoo, пожалуйста, добавьте свой ответ в качестве решения, чтобы я мог его принять, я сейчас читаю документы по нему, и если Дерек прав, это будет лучший ответ. Спасибо!   -  person Andrew Fox    schedule 20.12.2012


Ответы (6)


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

person 3dgoo    schedule 20.12.2012
comment
Проблема в том, что вы не можете переместить всплывающее окно HTML за пределы родительского окна. - person UrbKr; 20.02.2017

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

person jikey    schedule 20.12.2012
comment
Я поставлю этому +1, потому что знаю, что когда-нибудь он мне пригодится, хотя ни один из них не является тем, что я имел в виду для этой задачи. - person Andrew Fox; 20.12.2012

да, вы можете сделать это с помощью этого кода, который вы указали 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>
person Manish Nagar    schedule 20.12.2012
comment
Кажется, это не работает, как я ожидал, когда я снова нажимаю на родительское окно, дочернее окно теряется. - person Andrew Fox; 20.12.2012
comment
здесь проблема заключается в том, чтобы писать контент от дочернего к родительскому, поэтому его достаточно, а когда нет родителя, тогда не существует дочернего элемента. - person Manish Nagar; 20.12.2012

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

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

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

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

person John Page    schedule 13.12.2013
comment
Кроме того, кажется, что это работает только в том случае, если запрос open() сделан внутри обработчика событий. Кроме того, обработчик событий должен быть на объекте, который сам может принимать фокус, например на элементах ввода и т. д. - person John Page; 21.12.2013
comment
Несмотря на то, что вы можете прикрепить обработчики событий к таким вещам, как элементы div, они не могут принимать фокус, поэтому описанное выше не будет работать с ними. - person John Page; 21.12.2013

person    schedule
comment
Спасибо за ответ, но это не то, к чему я стремился. Это создает новое окно с текстовым полем в нем, но все равно теряется, когда я нажимаю на родительское окно. Я хочу, чтобы дочернее окно оставалось сверху, чтобы пользователь мог ссылаться на него при создании записи в родительском окне. - person Andrew Fox; 20.12.2012

person    schedule
comment
Спасибо, но я не уверен, что вы понимаете, чего я хочу. Я хочу, чтобы дочернее окно оставалось сверху, чтобы пользователь мог ссылаться на него при создании записи в родительском окне. - person Andrew Fox; 20.12.2012