Изменение окна, открытого функцией javascript "window.open ()" - PullRequest
1 голос
/ 17 декабря 2008

Вот мой сценарий:

У меня есть страница, содержащая несколько ссылок; каждая ссылка предназначена для открытия другого окна, содержащего PDF. Суть в том, что я не могу сделать так, чтобы это окно напрямую переходило в PDF, потому что я не хочу, чтобы конечный пользователь ясно представлял, что PDF находится в другом домене, и мне нужно называть PDF иначе, чем это было бы регулярно показать вверх.

Итак, у меня есть две страницы: одна пустая и содержит только рамку для отображения в формате pdf:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <title>[PDF]</title>
    </head>
    <frameset>
        <frame id="pdfFrame">
    </frameset>
</html>

И на странице со ссылками у меня есть следующая функция, которая вызывает эту страницу (мы будем называть вышеуказанную страницу "pdf.html"):

function OpenWindow(pdfTitle, pdfLocation)
{
    var myWindow = window.open("pdf.html", "", "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width=700,height=600");

    myWindow.document.title = pdfTitle; 
    myWindow.document.getElementById('pdfFrame').src = pdfLocation;
}

По большей части это работает нормально; однако, иногда всплывающее окно не будет загружено до строк выше, которые устанавливают источник заголовка / фрейма, и оно будет падать (или, по крайней мере, загружаться неправильно).

У меня вопрос: есть ли простой способ добавить какой-нибудь блокирующий вызов после открытия окна, чтобы дождаться, пока мы будем готовы запустить этот код?

Спасибо!

1 Ответ

3 голосов
/ 17 декабря 2008

Вы не можете на самом деле блокировать, пока он не загружен, но вы можете установить событие во всплывающем окне, например:

myWindow.onload = function()
{
    document.title = pdfTitle;
    document.getElementById('pdfFrame').src = pdfLocation;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...