iframe关闭父页面(iframe嵌套https页面)

iframe是html标签,具有一般标签的属性:widthiframe的高度heightiframe的宽度srciframe里面加载的页面urlname可以通过window.frames[name]获取到frameid和其他的html标签id一样在主页面中通过iframe标签可以引入其他子页面其中可以通过以下方法获取到iframe内部子页面的信息<!–…

大家好,又见面了,我是你们的朋友全栈君。

iframe是html标签,具有一般标签的属性:

width iframe的高度
height iframe的宽度
src iframe里面加载的页面url
name 可以通过window.frames[name]获取到frame
scrolling iframe里面的页面是否可以滚动
frameborder 是否显示iframe边框 1(显示)0(不显示)
id 和其他的html标签id一样
在主页面中通过iframe标签可以引入其他子页面

<!--localhost:8080/index-->
<iframe id='name' name='child' src="http://locahost:8080/child" frameborder="0" width='200px' height='300px' ></iframe>
<script>
   console.log(window.frames['child']);//获取到子页面的window对象
</script>

1、获取iframe内部元素

var frame=ducument.frames[‘name’]
|| document.getElementById();

常用属性contentWindow、contentDocument
frame.contentWindow 获取子页面的window对象
frame.contentDocument 获取子页面的document对象

2、获取父页面

子页面可以访问、修改同一个域名的父页面的方法和属性
window.parent/parent 获取当前页面的父页面-iframe所在的页面
parent.window 获取父页面的window属性
parent.document 获取父页面的document属性
window.top 获取打开该页面的父页面,如果当前页面没有被嵌套到iframe中,window.topwindow
window.self
=window

安全问题-禁止iframe嵌套网页

//当页面被非同域名iframe嵌套时:嵌套页面网址改变成本页面网址
if (window.top != window) {
    if (window.top.location.hostname && top.location.hostname !== window.hostname) {
        window.top.location.href = window.location.href;
    }
}

frame跨域调用

使用postMessage

父页面

<!DOCTYPE html>
<html lang="en">
<body>
    <!-- qsstage.morningstar.com.com/parent.html -->
    <iframe id="ifr" src="http://test.com/child.html"> </iframe>
</body>
<script>
    window.onload = function () {
        var ifr = document.querySelector('#ifr');
        ifr.contentWindow.postMessage({ a: 1 }, '*');
    }
    window.addEventListener('message', function (e) {
        console.log('child say: ' + e.data);
    }, false);
</script>
</html>

子页面

<!DOCTYPE html>
<html lang="en">
<body>
    <script>
        window.addEventListener('message', function (e) {
            console.log('parent say: ' + e.data.a);
            e.source.postMessage('get', '*');
        }, false)
    </script>
</body>
</html>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127708.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm使用matplotlib绘图学习笔记「建议收藏」

    pycharm使用matplotlib绘图学习笔记「建议收藏」#encoding=utf-8importnumpyasnpdefmain():importmatplotlib.pyplotasplt##lesson1:画图#x=np.linspace(-1,1,50)#x=np.linspace(-np.pi,np.pi,256,endpoint=True)#c,s=np.cos(x),np.sin(x)#plt.figure(1)#plt.plot(x,.

    2022年8月26日
    7
  • vue源码实现的整体流程解析「建议收藏」

    vue源码实现的整体流程解析「建议收藏」一、前言最近一直在使用vue做项目,闲暇之余查阅了一些关于vue实现原理的资料,一方面对所了解到的知识做个总结,另外一方面希望能对看到此文章的同学有所帮助。本文如有不足之处,还请过往的大佬批评指正。

    2022年8月4日
    5
  • have an insight into(offset)

    对于一个旋转的dom元素,getBoundingClientRect()得到的width,height是外接矩形的宽高,offsetWidthoffsetHeight是未旋转前dom的宽高

    2022年4月14日
    44
  • Glide加载hppts图片失败的解决办法,亲测有效

    Glide加载hppts图片失败的解决办法,亲测有效Glide加载https图片报错:javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:Trustanchorforcertificationpathnotfound.解决办法:在Application的onCreate中调用方法handleSSLHandshake()…

    2022年10月2日
    1
  • Android 代码混淆规则

    Android 代码混淆规则1.Proguard介绍AndroidSDK自带了混淆工具Proguard。它位于SDK根目录\tools\proguard下面。ProGuard是一个免费的Java类文件收缩,优化,混淆和预校验器。它可以检测并删除未使用的类,字段,方法和属性。它可以优化字节码,并删除未使用的指令。它可以将类、字段和方法使用短无意义的名称进行重命名。最后,预校验的Java6或针对JavaMicroEdi…

    2022年5月7日
    50
  • ILSVRC竞赛详细介绍(ImageNet Large Scale Visual Recognition Challenge)

    ILSVRC(ImageNetLargeScaleVisualRecognitionChallenge)是近年来机器视觉领域最受追捧也是最具权威的学术竞赛之一,代表了图像领域的最高水平。ImageNet数据集是ILSVRC竞赛使用的是数据集,由斯坦福大学李飞飞教授主导,包含了超过1400万张全尺寸的有标记图片。ILSVRC比赛会每年从ImageNet数据集中抽出部分样本,以2012年为…

    2022年4月5日
    294

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号