Одна идея: вместо того, чтобы устанавливать src так, чтобы он указывал на файл PDF напрямую, установите его так, чтобы он указывал на страницу, которая будет загружать pdf; например http://example.com/getPdf.aspx?file=SOME_URI
Страница getPdf.aspx может содержать код, который определяет, когда страница собирается перейти, а затем выполнить какое-либо действие. Я бы предложил, чтобы он вызывал родительскую страницу, которая должна сначала закрыть iframe и перейти к PDF.
Что-то вроде следующего:
//In getPdf.aspx
function Navigate()
{
var parentWindow = this.parentNode.parentNode //this.parentNode.parentNode is the window hosting the iframe;
var parentWindow.CloseMe(this.parentNode, PDF_URI); //this.parent is the Iframe
}
window.onunload = Navigate;
//In main page
function CloseIt(window_to_close, pdf)
{
window_to_close.close();
window.navigate(pdf); // or window.location = pdf;
}
Я не проверял это, но что-то очень похожее могло бы работать. Вы можете получить сообщение с предупреждением о том, что скрипт пытается закрыть страницу или что-то в этом роде.