javascript - 动态插入的 CSS(通过链接)在框架加载后应用

标签 javascript jquery html css dom

我有一个 iframe,我在运行时填充了它的 src:

$(iframe).attr("src", "<my html page uri>");

其次是:

    $(iframe).load(function() {
      //Copy style from parent
      if (setStyles) {
        setStyles = false;
        var linkTags = window.parent.document.head.getElementsByTagName("link");
        for (var i = 0; i < linkTags.length; i++) {
          if (linkTags[i].rel === "stylesheet") {
            var node = linkTags[i].cloneNode();
            node.href = linkTags[i].href;
            this.contentDocument.head.appendChild(node);
          }
        }
      }

      //add some elements dynamically

      var windowHeight = iframe.contentWindow.document.body.scrollHeight;
      $(iframe).height(windowHeight + 'px');
    });

在我附加了一些元素后,最后两行代码用于调整框架的大小以适应其内容。

这可行,但问题是我动态添加的 CSS 调整了一些元素的大小,这意味着框架的高度又是错误的。

我是否需要链接动态 CSS 添加和框架的大小调整,以便在调整大小之前将 CSS 应用于元素?

如果可以,怎么做? 谢谢

最佳答案

在读取 scrollHeight 属性之前,您必须等到 CSS 文件加载完毕。要实现它,您可以在调用 appendChild 之前向链接节点添加一个 onload 事件处理程序。

$(node).load(function() {
    var windowHeight = iframe.contentWindow.document.body.scrollHeight;
    $(iframe).height(windowHeight + 'px');
} ) ;
// Before this:
this.contentDocument.head.appendChild(node);

关于javascript - 动态插入的 CSS(通过链接)在框架加载后应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38822041/

相关文章:

html - Google + 元描述 + 换行符 = 可能吗?

javascript - Highchart 不显示带有 Ajax 数据的饼图

javascript - RegEx 使用 RegExp.exec 从字符串中提取所有匹配项

javascript - jQuery UI Slider - 只允许一个方向并删除范围

javascript - 如果克隆选择具有特定值,则使输入字段可见

javascript - 在 Js Accordion 菜单中选择子菜单时,保持所选父菜单打开

javascript 正则表达式匹配有效但替换无效

javascript - 根据符号向值动态添加类

JQuery 不循环浏览 IE 上的 XML

jquery - iframe 显示 :none not working