Image

Javascript – окна – фокус

Есть функция, которая открывает новое окно и не позволяет перейти к первому пока работа с новым не будет закончена. Реализовано путем перехвата событий. Смысл в том, чтобы получить нечто вроде modalDialog только с возможностью перехода по страницам внутри окна (передача post-данных самому себе).

Проблема в следующем - скрипт работает только под NN. Что бы в нем такого подправить, чтобы он работал и под IE?

Сам в js плохо разбираюсь – помогите, пожалуйста.


Код для NN (из FCKeditor):

-----------------------------

var dialog=new Object();

dialog.Show = function( dialogInfo, dialogName, pageUrl, dialogWidth, dialogHeight, parentWindow )
{
var iTop = (screen.height - dialogHeight) / 2 ;
var iLeft = (screen.width - dialogWidth) / 2 ;

var sOption = "location=no,menubar=no,resizable=no,toolbar=no,dependent=yes,dialog=yes,minimizable=no,modal=yes,alwaysRaised=yes" +
",width=" + dialogWidth +
",height=" + dialogHeight +
",top=" + iTop +
",left=" + iLeft ;

if ( !parentWindow )
parentWindow = window ;

var oWindow = parentWindow.open( '', 'dialog_' + dialogName, sOption, true ) ;
oWindow.moveTo( iLeft, iTop ) ;
oWindow.resizeTo( dialogWidth, dialogHeight ) ;
oWindow.focus() ;
oWindow.location.href = pageUrl ;

oWindow.dialogArguments = dialogInfo ;

this.Window = oWindow ;

try
{
window.top.captureEvents( Event.CLICK | Event.MOUSEDOWN | Event.MOUSEUP | Event.FOCUS ) ;
window.top.parent.addEventListener( 'mousedown', this.CheckFocus, true ) ;
window.top.parent.addEventListener( 'mouseup', this.CheckFocus, true ) ;
window.top.parent.addEventListener( 'click', this.CheckFocus, true ) ;
window.top.parent.addEventListener( 'focus', this.CheckFocus, true ) ;
}
catch (e)
{}
}

dialog.CheckFocus = function()
{
if ( typeof( dialog ) != "object" )
return ;

if ( dialog.Window && !dialog.Window.closed )
{
dialog.Window.focus() ;
return false ;
}
else
{
try
{
window.top.releaseEvents(Event.CLICK | Event.MOUSEDOWN | Event.MOUSEUP | Event.FOCUS) ;
window.top.parent.removeEventListener( 'onmousedown', dialog.CheckFocus, true ) ;
window.top.parent.removeEventListener( 'mouseup', dialog.CheckFocus, true ) ;
window.top.parent.removeEventListener( 'click', dialog.CheckFocus, true ) ;
window.top.parent.removeEventListener( 'onfocus', dialog.CheckFocus, true ) ;
}
catch (e)
{}
}
}

-----------------------------