您的当前位置:首页正文

JavaScript实现iframe自动高度调整和不同主域名跨域_javascript技巧

2020-11-27 来源:九壹网

大家都知道Js有同源策略,就是主域名不同嵌套的iframe不允许Js通信的。

比如我有一个网站,网站中要嵌入其网站的页面。那么我可以使用iframe引用第三方网站的地址即可。

但是问题也来的iframe的高度是固定的不能与第三方网站很好的融合,又例如第三方网站使用了瀑布流插件,要滚动加载自动计算高度,那么先说跨域:iframe主域名不同跨域方法,假如网站 A.com B.com A 里面放入一个iframe 引用了B.com,这种情况下B.com里面的Js是无法访问到A.com的。JS跨域必须是同源,就是同一个主域名,那肿么办呢?

我们可以在B.com中在引入一个iframe,暂且叫C吧 这个iframe加载A.com中的一个网页。这样同源就有了B.com中的iframe中的网页就可以和A.com通讯了。下面只要B和C通讯,让C和A通讯就完成B->A通讯,这样当B高度变化时通知C,让C通知A把iframe高度调整。
B和C通讯,其实通过url地址就可以实现通讯了,B.com iframe设置为隐藏,改变src地址时候C就可以接收。

废话不说了上代码

A.com/index.html


九壹网还为您提供以下相关内容希望对您有帮助:

如何设置iframe高度自适应在跨域情况下的可用方法

<script type="text/javascript"> function resizeCrossDomainIframe(id, other_domain) { var iframe = document.getElementById(id);window.addEventListener('message', function(event) { if (event.origin !== other_domain) return; // only accept messages from the specified domain if (isNaN...

js如何操作iframe的跨域问题

具体解决:1、在index.htm页面中声明一个js函数process(height, width);用来实现设置页面内iframe的高度和宽度;2、在sub-index.htm页面中再内嵌一个隐藏的iframe,iframe的src指向A域名下的页面ex.htm?height=xx&width=yy,该页面没有任何内容,只是用来传递sub-index.htm页面加载完之后的宽度和高度这...

如何在HTML的iframe中,获取被调用的页面的高度,并作为这个iframe的高 ...

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

iframe标签如何实现ajax跨域传参?

使用 iframe 实现 Ajax 跨域传参的方法主要是通过在不同域的页面间嵌入并利用 JavaScript 的能力。以下为具体步骤:首先,父窗口使用 JavaScript 动态创建一个 iframe,并设定其加载的目标页面以及相关参数。其次,iframe 内部的 JavaScript 代码获取需要传递的数据,通过 `postMessage()` 方法将数据发送回父...

Vue使用ifream遇到的问题?怎么处理跨域呢?

一个简单的示例是将 iframe 的父级高度设置为 80%,而 iframe 自身的高度设置为 100%,以实现高度自适应。然而,这种方法的使用场景较为有限,应根据实际情况灵活应用。对于 iframe 的高度自适应问题,还可以通过 JavaScript 来动态获取 iframe 内容的高度并调整 iframe 的高度。通常,可以通过 iframe....

javascript能实现远程调用其他网址的html页面代码吗?

js不能垮域 你说的需求是网络爬虫 抓取特定页面的信息 如果新浪头条有开放API 你就简单了 如果没有的话就得通过后台去抓 然后解析抓到的结构里面的title 和link 传到前台 前台ajax取得后 解析然后生成dom 添加到页面

HTML的frame框架怎么自适应高度?

<script language="javascript">//输入你希望根据页面高度自动调整高度的iframe的名称的列表//用逗号把每个iframe的ID分隔. 例如: ["myframe1", "myframe2"],可以只有一个窗体,则不用逗号。//定义iframe的IDvar iframeids=["test"];//如果用户的浏览器不支持iframe是否将iframe隐藏 yes 表示隐藏...

JavaScript中iframe实现局部刷新的几种方法汇总_javascript技巧

三:iframe实现局部刷新的方法三:方案一:用iframe的name属性定位或方案二:用iframe的id属性定位方案三:当iframe的src为其它网站地址(跨域操作时)方案四:通过和替换iframe的src来实现局部刷新可以用document.getElementById("iframname").src=""来进行iframe得重定向;示例代码如下:test.html ...

javascript 跨域调用js文件问题...

1.基于iframe实现跨域 基于iframe实现的跨域要求两个域具有aa.xx.com,bb.xx.com这种特点,也就是两个页面必须属于一个基础域(例如都是xxx.com,或是xxx.com.cn),使用同一协议(例如都是 http)和同一端口(例如都是80),这样在两个页面中同时添加document.domain,就可以实现父页面调用子页面的...

JavaScript 怎么跨域获取 iframe 中的内容

要解释这个问题,首先要解释两个技术点。每个“窗口”都是一个JS Runtime,即JS的运行时。如果只有一个窗口,那么就只有一个Runtime;如果一个窗口下面还有一个iframe,那么就有两个Runtime;以此类推。Runtime之间互操作(或者通信)是有跨域限制的。也就是说,如果这个窗口本身是a.baidu.com域名下的...

显示全文