首页 > 其他分享 >在 iframe 中继承父窗口 css/js 的方法

在 iframe 中继承父窗口 css/js 的方法

时间:2023-05-06 17:44:20浏览次数:32  
标签:parent script js link iframe var document css

问题缘由

iframe 属于一个单独的文档(单独的网页窗口)不能直接使用父页面的资源,如 css 和 js。

如果 iframe 和父页面同域则可以在 iframe 中使用 parent 对象来使用父页的 js 对象

继承 css

因为 iframe 是单独的网页窗口,所以页面一般都有 head 标签的。在 iframe 子页面的 head 标签中加入如下代码:

<script>
    window.parent.$(function () {  // 使用 vindow.parent 调用父级 jquery
    var head = document.getElementsByTagName("head").item(0);

    var linkList = window.parent.document.getElementsByTagName("link");  // 获取父窗口 link 标签对象列表
    for (var i = 0; i < linkList.length; i++) {
        var _link = document.createElement("link");
        _link.rel = 'stylesheet';
        _link.type = 'text/css';
        _link.href = linkList[i].href;
        head.appendChild(_link);
    }
});
</script>

继承 js

和上面类似,在 iframe 子页面的 body 标签尾部加入如下代码:

<script>
    window.parent.$(function () {  // 使用 vindow.parent 调用父级 jquery
    var body = document.getElementsByTagName("body").item(0);

    var scriptList = window.parent.document.getElementsByTagName("script");  // 获取父窗口 script 标签对象列表
    for (var i =0 ; i < scriptList.length; i++) {
        var _script = document.createElement("script");
        _script.type = 'text/script';
        _script.src = scriptList[i].src;
        body.appendChild(_script);
    }
});
</script>

问题

因为 iframe 页面相当于单独窗口,所以每个 iframe 页面的资源都需要重新加载,很浪费系统资源,所以非必要不使用。

标签:parent,script,js,link,iframe,var,document,css
From: https://www.cnblogs.com/qanx/p/17378084.html

相关文章

  • 【转载】JS手从URL中获取指定参数,不需要正则,很方便
    参考https://zhuanlan.zhihu.com/p/412254881代码现代方式在现代浏览器中,我们可以使用浏览器提供的URL对象来获取参数。这里方法最简单,bug少,不用我们操心。functiongetQueryString(name){//consturl=newURL(window.location.href);consturl_string="htt......
  • 常见的js加密方式
      RSA、16进制、Base64都属于可逆加密方式,可以通过相应的解密方法将密文还原为明文。  而哈希算法是不可逆加密方式,只能将明文进行哈希后得到一段固定长度的密文,但无法通过密文还原出明文。其中,SHA算法、MD5算法都是常用的哈希算法。一、16进制加密  加密和解密示例:de......
  • servlet 访问jstl文件出现500情况
    可能原因是导入依赖包出现的问题。<dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2</version><scope>provided</scope&g......
  • Three.js教程:访问几何体对象的数据
    推荐:将NSDT场景编辑器加入你的3D工具链其他系列工具:NSDT简石数字孪生访问几何体对象的数据实际开发项目的时候,可能会加载外部模型,有些时候需要获取模型几何体的顶点数据,如果想获取几何体的顶点数据首先要熟悉three.js几何体BoxGeometry和BufferGeometry的结构。访问几何体顶点......
  • Module build failed (from ./node_modules/css-loader/dist/cjs.js): TypeError: thi
    Modulebuildfailed(from./node_modules/css-loader/dist/cjs.js):TypeError:this.getOptionsisnotafunctionModulebuildfailed(from./node_modules/css-loader/dist/cjs.js):TypeError:this.getOptionsisnotafunction 用了各种办法,没有解决问题,直接把node_m......
  • 快速上手UmiJs
    先找个地方建个空目录mkdirmyapp&&cdmyapp通过官方工具创建项目yarncreate@umijs/umi-app#或npx@umijs/umi-appCopy:.editorconfigWrite:.gitignoreCopy:.prettierignoreCopy:.prettierrcWrite:.umirc.tsCopy:mock/.gitkeepWrite:package.json......
  • web------JSF ----2
    JSF简介一、 什么是JSF:JavaServerFaces(JSF)是一种用于构建Web应用程序的新标准Java框架。它提供了一种以组件为中心来开发JavaWeb用户界面的方法,从而简化了开发。JavaServerFaces于2004年三月1.0版正式提出,清楚的将Web应用程序的开发者划分......
  • shell jq处理json字符串
    1.1工具介绍自己用shell处理json字符串的时候,开发输入格式的不通会导致解析字符串有问题,所以这里用到了jq工具jq是一款命令行下处理JSON数据的工具。其可以接受标准输入,命令管道或者文件中的JSON数据,经过一系列的过滤器(filters)和表达式的转后形成我们需要的数据结构并将......
  • 使用Node.js调用Sqlite3模块写的大数据查询接口
    使用Node.js调用Sqlite3模块写的大数据查询接口constsqlite3=require('sqlite3');consthttp=require('http');consturl=require('url');constSqliteDb=async(dbFile)=>{constpri={};pri.db=newsqlite3.Database(dbFile);......
  • FreeCodeCamp-通过创作罗斯科绘画学习 CSS 盒子模型
    index.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>RothkoPainting</title><linkhref="./styles.css"rel="stylesheet"></hea......