我通过将iframe的src设置为pdf文档的路径,将pdf加载到我的网页上的iframe中。这就像我想查看pdf一样。
问题是某些pdf中有一些超链接到外部网站,当点击它们时,会在我的iframe中加载外部网站。
所以我的问题是:是否可以捕获pdf的超链接点击事件,以便我可以将请求重定向到新页面?
提前感谢您的宝贵建议。
答案 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对象中的“超链接点击”。似乎没有直接或简单的方法来完成您的请求。
但我有两条建议:
写自己的读者。例如,您可以在服务器端阅读PDF页面,并以您可以控制的方式将页面呈现给客户端(非常类似于亚马逊图书预览)
如果您可以请求您的网站用户安装浏览器插件,我认为可以对PDF对象进行更多控制。