iframe高度自适应_读取跨域iframe

iframe高度自适应_读取跨域iframe采用JavaScript来控制iframe元素的高度是iframe高度自适应的关键,同时由于JavaScript对不同域名下权限的控制,引发出同域、跨域两种情况。由于客户端js使用浏览器的同源安全策略,跨域情况下,被嵌套页面如果想要获取和修改父页面的DOM属性会出现权限不足的情况,提示错误:Permissiondeniedtoaccessproperty’document’。这是

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

采用JavaScript来控制iframe元素的高度是iframe高度自适应的关键,同时由于JavaScript对不同域名下权限的控制,引发出同域、跨域两种情况。

由于客户端js使用浏览器的同源安全策略,跨域情况下,被嵌套页面如果想要获取和修改父页面的DOM属性会出现权限不足的情况,提示错误:Permission denied to access property ‘document’。这是因为除了包含脚本的文档载入的主机外,同源策略禁止客户端脚本链接到其他任何主机或者访问其他任何主机的数据。这意味着访问一个web服务的javascript代码通常只有在它也驻留在Web服务本身所在的同一个服务器的时候才有用。

所以在跨域情况下,我们遇到的问题就是:父窗口无法获得被嵌套页面的高度,而且被嵌套页面也无法通过驻留在其服务器上的js修改父窗口Dom节点的属性。所以我们需要一个媒介,来获得被嵌套页面的高度同时又能修改主界面iframe节点的高度。

思路:现有主界面main在域a下,被嵌套页面B在域b下,被嵌套页面B又嵌套一个在域a下的中介页面A。当用户打开浏览器访问mail.html的时候载入B,触发B的onload事件获取其自身高度,然后B载入A,并将高度值作为参数赋值给A的location对象。这样A就可以通过location.hash获得B的高度。(location是javascript里边管理地址栏的内置对象,比如location.href就管理页面的url,用location.href=url就可以直接将页面重定向url。而location.hash则可以用来获取或设置页面的标签值。比如http://domain/#admin的location.hash=”#admin”。利用这个属性值可以做一些非常有意义的事情。)。由于A和main页面同域,所以可以修改main的dom节点属性,从而达到我们设置iframe标签高度的目的。

       嵌入iframe,且iframe的src是跨域的页面的高度自适应

关键代码:

iframe主页面:main.html

<iframe id="iframeB"  name="iframeB" src="www.b.com/B.html" width="100%" height="auto" scrolling="no" frameborder="0"></iframe>

iframe嵌套页面:B.html

<iframe id="iframeA" name="iframeA" src="" width="0" height="0" style="display:none;" ></iframe> 
<script type="text/javascript">
function sethash(){
hashH = document.documentElement.scrollHeight; //获取自身高度
urlC = "www.a.com/A.html"; //设置iframeA的src
document.getElementByIdx_x_x_x("iframeA").src=urlC+"#"+hashH; //将高度作为参数传递
}
window.onload=sethash;
</script>

中介页面:A.html

<script>
function pseth() {
var iObj = parent.parent.document.getElementByIdx_x_x_x('iframeB');//A和main同域,所以可以访问节点
iObjH = parent.parent.frames["iframeB"].frames["iframeA"].location.hash;//访问自己的location对象获取hash值
iObj.style.height = iObjH.split("#")[1]+"px";//操作dom
}
pseth();
</script>

同域情况下就不用多说了,直接在被嵌套的页面B中获取其自身高度并操作其父窗口main的dom属性即可。

iframe高度自适应_读取跨域iframe

神策下的页面都是链接到其他域的页面,此时要做自适应高度就会涉及到跨域下的iframe自适应高度

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • 安全帽识别前端与后端功能分析[通俗易懂]

    安全帽识别前端与后端功能分析[通俗易懂]近年来,监管部门对建筑工地的要求越来越高了,为保障工地现场人员安全,智慧工地解决方案增加了更多的管理方式,其中安全帽识别已经成为智慧工地的重要管理手段。安全帽识别是通过视频分析来检测工作人员是否佩戴安全帽,属于人…

    2022年5月12日
    35
  • PyCharm激活码永久有效PyCharm2019.2.4激活码教程-持续更新,一步到位

    PyCharm激活码永久有效PyCharm2019.2.4激活码教程-持续更新,一步到位PyCharm激活码永久有效2019.2.4激活码教程-Windows版永久激活-持续更新,Idea激活码2019.2.4成功激活

    2022年6月19日
    30
  • 数据分析模型篇—PEST分析

    数据分析模型篇—PEST分析今天给大家分享的是在企业战略管理中一个比较经典的分析—PEST分析。PEST分析一种企业所处宏观环境分析模型,宏观环境又称一般环境,是指影响一切行业和企业的各种宏观力量。而针对PEST,指的就是P政治(Politics),E经济(Economy),S社会(Society),T技术(Technology),这四类因素一般不受企业掌控,但是又会对企业的发展产生很大的影响,所以PEST分析在很多企业…

    2022年6月12日
    35
  • 虚拟机上网问题(设置NAT依然无法上网)

    虚拟机上网问题(设置NAT依然无法上网)首先先设置NAT模式,保证虚拟机和主机共享IP可以解决校园网桥接模式主机用户登录了,虚拟机也要用户登录才能上网然后windows,打开服务,确保下面几个服务是打开的…

    2022年5月16日
    39
  • 论文投稿系列之Cover Letter写法(一)[通俗易懂]

    论文投稿系列之Cover Letter写法(一)[通俗易懂]论文投稿系列之CoverLetter写法(一)研之成理微信公众号:研之成理(ID:rationalscience)取消关注PytLab酱等87人赞同了该文章作者:ZSH1.什么是Coverletter?CoverLetter,即投稿信,是论文投递时与论文一起发送给编辑的信件,其目的是让编辑在阅读你的论文之前,简单了解你文章的基本情况。Cove…

    2022年4月29日
    179
  • 互联网裁员为什么专捡大于35的裁?

    互联网裁员为什么专捡大于35的裁?以前写过一篇文章《在中国程序员是青春饭吗?》,一时间,各个平台都成为爆文,在这篇文章中,详细讲解了程序员的青春饭问题,并且给出了具体地五个出路。第一条出路,说的是需要走技术专家路线。有些小伙伴就有疑问了,我年龄大了,我技术菜,就我不能降薪去小公司吗?就着这两年各个大厂对高龄程序员的种种限制,我们再来谈一谈,为什么我建议大家如果要走技术路线,就一定要进中大厂走技术专家的路线。记得帮我点赞哦。一、大厂裁员,为什么优先35岁以上?大道理总是无力的,先讲几个事实吧。为了避免不必要的.

    2022年7月17日
    20

发表回复

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

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