在IFrame中捕获PDF上的超链接Click事件

时间:2010-06-24 08:06:37

标签: .net pdf iframe

我通过将iframe的src设置为pdf文档的路径,将pdf加载到我的网页上的iframe中。这就像我想查看pdf一样。

问题是某些pdf中有一些超链接到外部网站,当点击它们时,会在我的iframe中加载外部网站。

所以我的问题是:是否可以捕获pdf的超链接点击事件,以便我可以将请求重定向到新页面?

提前感谢您的宝贵建议。

3 个答案:

答案 0 :(得分:1)

一个想法:不是将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;

}

我没有对此进行测试,但非常类似于它可能会起作用。您可能会收到一条消息,警告脚本正在尝试关闭页面或其他内容。

答案 1 :(得分:0)

也许可以使用window.unload捕获用户导航的事件。

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

返回false;     }

我无法保证在onunload中支持所有浏览器支持的操作范围。

要考虑的其他事情是尝试为在新窗口中打开的URL设置默认的“目标”(对于想要正常运行的链接而言)。我不完全确定您是否可以在父文档中为iFrame设置此行为。

答案 2 :(得分:0)

由于“PDF”对象不是HTML或DOM的一部分,因此JavasScript侦听器无法监听它。据我所知,Adobe没有为我们提供任何方法来收听PDF对象中的“超链接点击”。似乎没有直接或简单的方法来完成您的请求。

但我有两条建议:

  1. 写自己的读者。例如,您可以在服务器端阅读PDF页面,并以您可以控制的方式将页面呈现给客户端(非常类似于亚马逊图书预览)

  2. 如果您可以请求您的网站用户安装浏览器插件,我认为可以对PDF对象进行更多控制。