jquery 获取加载时 iframe 内容的高度

2023-11-23

我有一个帮助页面 help.php,我正在 main.php 的 iframe 中加载该页面 在 iframe 中加载此页面后,如何获取该页面的高度?

我问这个是因为我无法将 iframe 的高度设置为 100% 或自动。这就是为什么我认为我需要使用javascript.. 我正在使用 jQuery

CSS:

body {
    margin: 0;
    padding: 0;
}
.container {
    width: 900px;
    height: 100%;
    margin: 0 auto;
    background: silver;
}
.help-div {
    display: none;
    width: 850px;
    height: 100%;
    position: absolute;
    top: 100px;
    background: orange;
}
#help-frame {
    width: 100%;
    height: auto;
    margin:0;
    padding:0;
}

JS:

$(document).ready(function () {
    $("a.open-help").click(function () {
        $(".help-div").show();
        return false;
    })
})

HTML:

<div class='container'>
    <!-- -->
    <div class='help-div'>
        <p>This is a div with an iframe loading the help page</p>
        <iframe id="help-frame" src="../help.php" width="100%" height="100%" frameborder="1"></iframe>
    </div>  <a class="open-help" href="#">open Help in iFrame</a>

    <p>hello world</p>
    <p>hello world</p>
    <p>hello world</p>
    <p>hello world</p>
    <p>hello world</p>
</div>

好吧我终于找到了一个很好的解决方案:

$('iframe').load(function() {
    this.style.height =
    this.contentWindow.document.body.offsetHeight + 'px';
});

由于某些浏览器(较旧的 Safari 和 Opera)报告加载在 CSS 渲染之前完成,因此您需要设置微超时并清空并重新分配 iframe 的 src。

$('iframe').load(function() {
    setTimeout(iResize, 50);
    // Safari and Opera need a kick-start.
    var iSource = document.getElementById('your-iframe-id').src;
    document.getElementById('your-iframe-id').src = '';
    document.getElementById('your-iframe-id').src = iSource;
});
function iResize() {
    document.getElementById('your-iframe-id').style.height = 
    document.getElementById('your-iframe-id').contentWindow.document.body.offsetHeight + 'px';
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jquery 获取加载时 iframe 内容的高度 的相关文章

随机推荐

  • 如何向数组添加新元素?

    我有以下代码 String where where append ContactsContract Contacts HAS PHONE NUMBER 1 where append ContactsContract Contacts IN
  • 在张量流中多次运行 train op

    我有一些相当大的批量大小 我想对其采取多个梯度步骤 虽然我可以使用 python for 循环轻松完成此操作 但我想可能有一种更有效的方法 不需要在每次迭代时将数据传输到 GPU 我曾多次尝试将火车操作放入获取列表中 但我不确定它实际上是否
  • 在 Pandas 数据框中创建 value_counts 列

    我想从 Pandas 数据帧列之一创建唯一值的计数 然后将包含这些计数的新列添加到我的原始数据帧中 我尝试了几种不同的方法 我创建了一个 pandas 系列 然后使用 value counts 方法计算计数 我尝试将这些值合并回原始数据帧
  • TFS 签入包含“较大”二进制文件的变更集超时

    我正在执行从 tfs visualstudio 到本地 2012 服务器的 TFS 集成迁移 我遇到了一个特定变更集的问题 该变更集包含多个超过 1 MB 的二进制文件 其中一些文件大小为 15 16 MB 我正在使用本地 TFS 进行远程
  • AngularJS:异步初始化过滤器

    我在尝试使用异步数据初始化过滤器时遇到问题 过滤器非常简单 它需要将路径转换为名称 但要做到这一点 它需要一个对应数组 我需要从服务器获取该数组 在返回函数之前 我可以在过滤器定义中执行一些操作 但是异步方面阻止了这种情况 angular
  • 在没有 ssh 访问权限的情况下运行 Composer 和 laravel (artisan) 命令

    我想在我的基本共享主机上测试一些 Laravel 应用程序 目前 我只是上传完整的应用程序 包括供应商文件 但这需要很长时间 因为我没有ssh访问我的主机我想知道是否有一个选项可以在没有这个的情况下运行作曲家 工匠命令 我找到了这个链接 使
  • 在 L 预览中使用材质主题

    L 开发者预览版目前处于 API 级别 20 但是 显然主题需要 API 级别 21 android style Theme Material Light DarkActionBar需要 API 级别 21 这是一个错误 我做错了什么 或者
  • 如何检查列表中的所有元素是否相同?

    如果我有这个清单 mylist n n 4 3 w 我如何让它读取列表 并告诉我它们是否都相同 我知道在这个例子中很容易看出它们并不完全相同 我有更大的清单 我希望它为我阅读 我会使用以下方法来解决这个问题 min 如果是这样 我将如何输入
  • Pandas 从 URL 读取 csv 并包含请求标头

    从 Pandas 0 19 2 开始 该函数读取 csv 可以传递一个 URL 例如 从这里可以看出answer import pandas as pd url https raw githubusercontent com cs109 2
  • 无法实例化类型 List [重复]

    这个问题在这里已经有答案了 我有以下代码 List
  • aspnet-codegenerator:即使添加 Microsoft.VisualStudio.Web.CodeGeneration.Design 之后,也没有可用的代码生成器

    无法使用生成脚手架aspnet 代码生成器 下面是我尝试过的 使用创建了 ASP Net RazorPages 应用程序dotnet new webapp Did a dotnet build 使用安装的 dotnet aspnet cod
  • 使用单个 main 执行多个 python 文件

    我有多个 python 文件 每个文件都有不同的类和方法 我想使用我在所有文件之外单独拥有的主要功能来执行所有这些文件 例如 我有三个文件 one py two py Three py 我在其中任何一个中都没有 main 方法 但是当我执行
  • 来自 sys.platform 的可能值?

    以下命令可能的返回值是什么 import sys print sys platform 我知道有很多可能性 所以我主要对 主要 可能性感兴趣 Windows Linux Mac OS System Value Linux linux or
  • 将 postgres 更改为不区分大小写

    如何将 Postgresql 数据库更新为不区分大小写 我已经有一些表和一些数据 目前它们区分大小写 但我想将它们全部更新为不区分大小写 你无法得到你的database不区分大小写 但从 v12 开始 您可以创建不区分大小写的 ICU 排序
  • 在 iPhone 中显示带有文本框的警报视图

    是否可以像 AppStore 应用程序一样显示带有文本框的警报视图 它在这样的对话框中要求输入密码 我至少见过一些其他第三方应用程序在使用它 它是私有 API 吗 这是来自 Tharindu Madushana 的 Apple 批准 的操作
  • 从文件加载 RSA 私钥时出现 InvalidKeySpecException

    我正在尝试从 java 中的文件加载私钥 该密钥由 ssh agent 生成 我实际上正在使用下面的代码 public PrivateKey getPrivateKeyFromFile try String privateKey readF
  • 角度拦截器和 CORS

    我正在尝试编写一个拦截器 以使用 Angular 向所有 HTTP 请求添加令牌 我大致使用这里给出的食谱 https thinkster io interceptors 所以代码使用 http 模块工厂和tokenInterceptor
  • 使用 UNION 时,SQL 查询是否保证以原子方式执行?

    我正在发出一个由使用 UNION 分组的多个 SELECT 组成的单个 SQL 查询 SELECT FROM employee LEFT JOIN department ON employee DepartmentID department
  • 是否可以在 Visual Studio 调试会话之间保留 Cookie

    我有一个身份验证 cookie 当我在本地环境中点击登录屏幕后 该 cookie 就会被设置 该 cookie 已被设置为持久性的 并被赋予未来 7 天的超时期限 当我结束调试会话并在另一个构建后开始调试时 cookie 不存在 每个浏览器
  • jquery 获取加载时 iframe 内容的高度

    我有一个帮助页面 help php 我正在 main php 的 iframe 中加载该页面 在 iframe 中加载此页面后 如何获取该页面的高度 我问这个是因为我无法将 iframe 的高度设置为 100 或自动 这就是为什么我认为我需