PDF документ гиперссылка на JavaScript, чтобы изменить URI родительского окна - PullRequest
4 голосов
/ 13 мая 2011

У меня есть веб-страница HTML (родитель), которая содержит гиперссылку. При нажатии открывается новое окно и отображается другой HTML-документ (дочерний):

 <a href="/testhtml.html" target="_blank">Open Child</a>

Внутри дочернего документа есть несколько ссылок, которые сконструированы так:

 <a href="#" onclick='opener.window.location.href="/somewhere.html";
                   window.close();'>Make Parent Go Somewhere</a>

Таким образом, в результате вы можете щелкнуть ссылку в дочернем окне, это приведет к тому, что родительское окно перейдет к этому новому uri, а затем закроет себя. Это прекрасно работает.

Я бы хотел сделать то же самое с PDF в качестве дочернего документа. Я могу просто встраивать гиперссылки в PDF или даже Javascript:

  13 0 obj
  <<
  /Type /Action
  /S /JavaScript /JS
    (opener.window.location.href="/somewhere.html";)
  >>
 endobj

Javascript прекрасно запускается, но объект «opener» не определен. (ReferenceError: opener is not defined 1: Link:Mouse Up) Возможно ли то, что я собираюсь сделать? Какой объект я бы использовал для доступа к URI открывающегося окна?

PS: Если это проблема, у меня есть некоторый контроль над целевой средой пользователя. Я могу указать, что они используют Acrobat Reader и даже более позднюю версию.

Ответы [ 2 ]

2 голосов
/ 18 мая 2011

HTML и PDF не используют одну и ту же объектную модель.Тем не менее, можно заставить HTML и PDF JS общаться друг с другом:

Получение уведомления, когда пользователь щелкает ссылку во встроенном PDF

0 голосов
/ 26 мая 2011

Одним из простых способов достижения вашей цели является создание гиперссылки в формате PDF с href="javascript:myfunction()" и определением myfunction() на веб-странице HTML.Полученный HTML-файл будет выглядеть примерно так:

<html>
<head>
 <script type="text/javascript">
    function myfunction(){
        alert("captcha!");
    }
 </script> 
</head>
<body>
<object data="myfunction.pdf" type="application/pdf" width="100%" height="100%">
</object>
</body>
</html>

И ваш объект PDF с гиперссылкой будет:

<</Type /Action /S /URI /URI (javascript:myfunction\(\))>>

Внутри myfunction () вы сможете использовать объектную модель HTML какобычно.

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