You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在网页中通过iFrame实现双PDF并排对比及文档切换功能

问题原因

你当前代码无法分别控制两个iframe的核心问题是重复定义了同名函数:JS中后声明的link1/link2/link3函数会直接覆盖前面的定义,导致所有按钮点击后只会修改右侧frame2的加载地址。

优化实现方案

下面是更简洁、易维护的实现,无需定义大量重复函数,后续新增PDF版本时只需要添加对应按钮即可:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="robots" content="noindex,nofollow">
    <title>Illustrations of Masonry</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.3/css/bulma.min.css">
    <script defer src="js/fontawesome-all.min.js"></script>
</head>
<body>
<section class="hero is-link">
    <div class="hero-body">
        <p class="title">Illustrations of Masonry</p>
        <p class="subtitle">Compare Editions</p>
    </div>
</section>

<section>
    <div class="container mt-4">
        <div class="columns is-centered">
            <!-- 左侧PDF面板 -->
            <div class="column">
                <div class="buttons mb-3">
                    <!-- 自定义属性:data-target指定控制的iframe,data-pdf指定PDF文件名 -->
                    <button class="button is-small is-primary" data-target="frame1" data-pdf="1772.pdf">1772版</button>
                    <button class="button is-small is-primary" data-target="frame1" data-pdf="1775.pdf">1775版</button>
                    <button class="button is-small is-primary" data-target="frame1" data-pdf="1781.pdf">1781版</button>
                </div>
                <iframe id="frame1" src="pdf/1772.pdf" width="100%" height="1000">
                    <p>Your browser does not support iFrames.</p>
                </iframe>
            </div>
            <!-- 右侧PDF面板 -->
            <div class="column">
                <div class="buttons mb-3">
                    <button class="button is-small is-primary" data-target="frame2" data-pdf="1772.pdf">1772版</button>
                    <button class="button is-small is-primary" data-target="frame2" data-pdf="1775.pdf">1775版</button>
                    <button class="button is-small is-primary" data-target="frame2" data-pdf="1781.pdf">1781版</button>
                </div>
                <iframe id="frame2" src="pdf/1781.pdf" width="100%" height="1000">
                    <p>Your browser does not support iFrames.</p>
                </iframe>
            </div>
        </div>
    </div>
</section>

<script>
// 统一绑定所有PDF切换按钮的点击事件
document.querySelectorAll('button[data-pdf]').forEach(btn => {
    btn.addEventListener('click', () => {
        // 获取要控制的iframe和要加载的PDF地址
        const targetFrame = document.getElementById(btn.dataset.target);
        // 这里替换成你自己的PDF根路径即可
        targetFrame.src = `http://www.tlhinteractive.com/preston/pdf/${btn.dataset.pdf}`;
    })
})
</script>
</body>
</html>

其他可选方案

如果需要更丰富的PDF控制能力(比如双栏同步滚动、页码跳转、文本搜索),也可以用PDF.js开源库实现渲染,iframe方案是当前需求下最简便的实现方式。

内容的提问来源于stack exchange,提问作者TomH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:03:03