Как заставить детское окно оставаться на вершине?
Я использую window.open
открыть дочернее окно из родительского окна. Я хочу, чтобы дочернее окно оставалось сверху, чтобы пользователь мог ссылаться на него, делая запись в родительском окне. Можно ли это сделать? Сейчас я использую Firefox, но было бы неплохо, если бы он работал во всех браузерах.
6 ответов
Как насчет использования всплывающего div вместо открытия нового окна?
Да, вы можете сделать это с помощью кода, который вы даете 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>