Jump to content
  • 0

Доступ к объектам в новом окне


Spavel_74
 Share

Question

var line = 'test.php';

NewOpenWin=window.open(line,'','top=150,left=200,width=640,height=480,scrollbars=yes,location=no,toolbar=no,directories=no,status=no,menubar=no,resizable=yes');

неполучается получить доступ к объектам , делаю так

sdsd=NewOpenWin.document;

далее пытаюсь обратится к объектам в окне (sdsd.body и т.д.), ничего не выходит.

Link to comment
Share on other sites

20 answers to this question

Recommended Posts

  • 0

нашол пример

myWin= open("bla.shtml", "displayWindow", 
"width=400,height=300,status=no,toolbar=no,menubar=no");

Где displayWindow - Имя окна, как я понял.

Теперь я знаю имя окна "displayWindow" . Как теперь обращатся к объектам в новом окне?

Link to comment
Share on other sites

  • 0

 
var line = 'openmoredata.php';

NewOpenWin=window.open(line,'sd6','top=150,left=200,width=640,height=480,scrollbars=yes,location=no,toolbar=no,directories=no,status=no,menubar=no,resizable=yes');
sdsd=NewOpenWin.document;
setTimeout("alert (sdsd.body);",900);
setTimeout("sdsd.body.style.backgroundColor='Red';",900);

После setTimeout - 900 получил доступ к объектам, ну это же не выход от куда можно знать что после 900 зазрузится, может через 1800.. :)

Link to comment
Share on other sites

  • 0

Можно в самый конец загружаемого файла поместить какой-нибудь невидимый блок. А через JS смотреть его свойства. Если получены, значит загрузка уже прошла. Нет, подождем секунд 10.

Link to comment
Share on other sites

  • 0

Влад, ну это самый плохой вариант, который можно придумать =)

Достаточно вызывать некую функцию в родительском окне, по окончании загрузки контента.

Или прицепиться к domload событию, если так уж важно получить доступ к документу до окончания загрузки картинок.

Link to comment
Share on other sites

  • 0

Попробовал вот так :

 i=0;
while(i != 1)
{
if (NewOpenWin.onLoad) i=1;
}
if (i==1) alert ("окно закгрузилось");

Неполучается

Мне не Важно чтобы загрузились картинки на странице. Мне Важно узнать когда же я могу назначать элементам (объектам) свойствам значения.

Главное узнать что все объекты готовы для работы с ними.

Link to comment
Share on other sites

  • 0

  i=0;
while(i != 1)
{
if (NewOpenWin.document) i=1;
}
if (i==1)
{
alert ("окно закгрузилось");
NewOpenWin.focus();
NewOpenWin.document.body.style.backgroundColor='Red';
}

Вроде работает , но ремишь alert и выда?т ошибку в

NewOpenWin.document.body.style.backgroundColor='Red';

Link to comment
Share on other sites

  • 0

Сделал Вот так

	 var line = 'openmoredata.php?idfield='+fieldform_id;
NewOpenWin=window.open(line,'tytrwrrr','top=150,left=200,width=640,height=480,scrollbars=yes,location=no,toolbar=no,directories=no,status=no,menubar=no,resizable=yes');
i=0;
while(i != 1)
{
if (!NewOpenWin.closed)
{
if ((!NewOpenWin.closed) && (NewOpenWin.document.getElementById("ItBody")!=null)) {i=1; break;}
} else break;
}
if ((i==1) && (!NewOpenWin.closed))
{
NewOpenWin.document.body.resourceobj=name_resourceobj;
NewOpenWin.focus();
//alert(NewOpenWin.document.body.resourceobj);
//NewOpenWin.document.body.style.backgroundColor='Red';
//alert ("окно закгрузилось");
}

Вроде работает,

У меня вопрос: имя окна назначено как tytrwrrr, нужно сделать так чтобы окно , если оно открыто не открывать, а просто focus?

Link to comment
Share on other sites

  • 0

Сделал то что хотел

function OpenMoreData(fel,nameopermore)
{
var objbutton = window.event.srcElement;
var fieldform_id = objbutton.getAttribute("fieldform_id");
var temp="obj=document."+fel.name+"."+nameopermore+";";
eval(temp);
if ((obj!=null) && (fieldform_id!=null))
{
var name_resourceobj=fel.name+"."+obj.name;
var namewin=fel.name+'_'+obj.name;

evaltext=" var line = 'openmoredata.php?idfield='+fieldform_id;";
evaltext=evaltext+" "+ namewin +"=window.open(line,namewin,'top=150,left=200,width=640,height=480,scrollbars=yes,location=no,toolbar=no,directories=no,status=no,menubar=no,resizable=yes');";
evaltext=evaltext+" i=0;";
evaltext=evaltext+" while(i != 1)";
evaltext=evaltext+" {";
evaltext=evaltext+" if (!"+ namewin +".closed)";
evaltext=evaltext+" {";
evaltext=evaltext+" if ((!"+ namewin +".closed) && ("+ namewin +".document.getElementById('ItBody')!=null)) {i=1; break;}";
evaltext=evaltext+" } else break;";
evaltext=evaltext+" }";
evaltext=evaltext+" if ((i==1) && (!"+ namewin +".closed))";
evaltext=evaltext+" {";
evaltext=evaltext+" "+ namewin +".document.body.resourceobj=name_resourceobj;";
evaltext=evaltext+" "+ namewin +".focus();";
evaltext=evaltext+" }";

try
{
temp="NewOpenWin="+namewin;
eval(temp);
if ((NewOpenWin!=null) && (!NewOpenWin.closed)) //окно уже есть и не закрыто
{
NewOpenWin.focus();
} else eval(evaltext);
}
catch (exception)
{
eval(evaltext);
}
}

}

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy