PDF 添加点击事件

这篇博客介绍了如何在PDF文件上添加点击事件。通过在PDF源文件放置占位符并利用iframe元素,可以获取iframe中的占位符父节点,进而为父节点添加点击样式。此外,还可以调整占位符文字大小以扩大点击区域。此方法依赖于pdf.js库,并且仅适用于使用iframe展示的PDF文件。
摘要由CSDN通过智能技术生成

PDF 添加点击事件

想要给 pdf 添加事件,首先需要在你的 pdf 源文件上添加占位符,(本案例占位符是 usertask),然后使用 iframe 自带的属性获取 iframe 的元素,找到 占位符的父节点,给父节点添加点击样式即可,同时你还可以给占位符的文字设置大小,增加点击区域

// PDF 事件处理
pdfNode() {
    var that = this;
    // 获取 iframe 元素 添加点击事件 headerIframe 是 iframe 的 id viewer 是 iframe 元素下的 id
    var iframeElement = document.getElementById('headerIframe').contentWindow.document.getElementById('viewer');
    // 获取 iframe 元素下所有子元素的集合
    var iframeChildren = iframeElement.children;
    for(var n = 0; n < iframeChildren.length; n++ ) {
        // 获取元素是第几页的pdf
        var pageNumber = iframeChildren[n].getAttribute('data-page-number');
        // 判断当前元素的页码是否和当前页的页码相同 that.page 为当前页的页码
        if(pageNumber == that.page) {
            console.log(that.page);
            console.log(iframeChildren[n]);
            // 获取当前元素下的最后一个直接子元素
            var elementChild =  iframeChildren[n].lastElementChild;
            var elementChildren = elementChild.children;
            console.log(elementChild.hasChildNodes());
            if(elementChild.hasChildNodes() === true) {
                for(var g = 0; g < elementChildren.length; g++) {
                    // 获取元素内容
                    var name = elementChildren[g].innerHTML;
                    console.log(name.indexOf("usertask"));
                    if(name.indexOf("usertask") === 0) {

                    }
                    // 下面方法只执行一次
                    if(name.indexOf("usertask") === 0) {
                        var pageNumber = elementChildren[g].getAttribute('class');
                        if(pageNumber !== 'pointer') {
                            elementChildren[g].className = 'pointer';
                            // 设置内容大小 
                            elementChildren[g].style.fontSize = '30px';
                            // 设置元素鼠标移入样式
                            elementChildren[g].style.cursor = 'pointer';
                            elementChildren[g].addEventListener('click',function(e){
                                that.dialogVisible = true;
                            })
                        }
                    }
                }
            }
            // 设置以下代码是因为本案例 首次进入pdf无法有效的获取 pdf 节点,所以给 page 重新赋值,还用了 watch 监听 page,page 发生变化重新执行本方法
            if(elementChild.hasChildNodes() === false) {
                that.page = pageNumber;
            }
        }
    }
}

注意:该方法需要用到 pdf.js 且使用 iframe 元素搭建的pdf文件, 如果不是使用 iframe 搭建的 pdf,使用该方法无效,如需查询如何使用 iframe ,请移步 博客

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值