Catching Click - событие гиперссылки на PDF в IFrame - PullRequest
1 голос
/ 24 июня 2010

Я загружаю PDF-файлы в iframe на своей веб-странице, устанавливая src iframe для пути к документу pdf. Это работает, как я хотел бы для просмотра PDF.

Проблема в том, что некоторые PDF-файлы содержат гиперссылки на внешние веб-сайты, которые при нажатии загружают внешний веб-сайт в мой iframe.

Итак, мой вопрос: возможно ли перехватить событие щелчка гиперссылки в pdf, чтобы я мог перенаправить запрос на новую страницу?

Заранее благодарим за ваши ценные предложения.

Ответы [ 3 ]

1 голос
/ 26 июня 2010

Одна идея: вместо того, чтобы устанавливать 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;

}

Я не проверял это, но что-то очень похожее могло бы работать. Вы можете получить сообщение с предупреждением о том, что скрипт пытается закрыть страницу или что-то в этом роде.

0 голосов
/ 26 июня 2010

Поскольку объект «PDF» не является частью HTML или DOM, он не может прослушиваться слушателем JavasScript.Как я знаю, Adobe не предоставляет нам никакого способа прослушивания «нажатой гиперссылки» в объекте PDF.Кажется, нет простого или простого способа выполнить ваш запрос.

Но у меня есть два предложения для вас:

  1. Напишите вашему читателю.Например, вы можете прочитать страницу PDF на стороне сервера и отобразить ее на клиенте таким образом, чтобы вы могли контролировать ее (например, предварительный просмотр книги Amazon)

  2. Если вы можете спросить свой вебПользователь сайта, чтобы установить плагин браузера, я думаю, что можно сделать больше контроля над объектом PDF.

0 голосов
/ 26 июня 2010

Возможно, можно отследить событие, когда пользователь ушел, используя window.unload.

window.onunload = function() {
    /* Do something */

return false;}

Однако я не могу поручиться за диапазон действий, поддерживаемых во всех браузерах onunload.

Еще один момент, который следует учитывать, - попытка установить «целевую» цель по умолчанию для URL, которые открываются вновое окно (вместо этого для ссылок, которые вы хотите вести себя нормально).Однако я не совсем уверен, что вы можете установить это поведение для iFrame в родительском документе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...