Изменение окна, открытого функцией javascript window.open ()

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

У меня есть страница, содержащая несколько ссылок; каждая ссылка предназначена для открытия другого окна, содержащего 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;
}

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

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

Спасибо!

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
2 147
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

Раньше у меня была похожая идея, и я пробовал то же самое; однако это не сработало ... Я думаю, эта функция создается в родительском окне после загрузки дочернего элемента

John 17.12.2008 20:57

Другие вопросы по теме