最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

js跨域问题之跨域iframe自适应大小实现代码_javascript技巧

来源:动视网 责编:小采 时间:2020-11-27 20:54:09
文档

js跨域问题之跨域iframe自适应大小实现代码_javascript技巧

js跨域问题之跨域iframe自适应大小实现代码_javascript技巧: 代码如下: function setHeight(){ var dHeight = document.documentElement.scrollHeight; var t = document.createElement(div); t.innerHTML = ''; document.documentElement.appendChild(
推荐度:
导读js跨域问题之跨域iframe自适应大小实现代码_javascript技巧: 代码如下: function setHeight(){ var dHeight = document.documentElement.scrollHeight; var t = document.createElement(div); t.innerHTML = ''; document.documentElement.appendChild(


代码如下:


function setHeight(){
var dHeight = document.documentElement.scrollHeight;
var t = document.createElement("div");
t.innerHTML = '';
document.documentElement.appendChild(t.firstChild);
}


我想着跨域如何解决啊!后来去网上搜索了一下子 恍然大悟

具体如下 我是复制过来了 大家重点理解一下子它的实现思路 :


问题:

A域名下的页面a.htm中通过iframe嵌入B域名下的页面b.html,由于b.html的大小等是不可预知而且会变化的,所以需要 a.htm中的iframe自适应大小.

问题本质 :

js的跨域问题,因为要控制a.htm中iframe的大小就必须首先读取得到b.html的大小,A、B不属于同一个域,js的访问受限,读取不 到b.html的大小.

解决方案:

首先前提是A,B是合作关系,b.html中能引入A提供的js

首先a.html中通过iframe引入了b.html

代码如下:



B在b.html中引入了A提供的js文件

Html代码
代码如下:


该js首先读取b.html的宽和高,然后创建一个iframe,src为和A同一个域的中间代理页面a_proxy.html,吧读取到的宽和 高设置到src的hash里面

Html代码
代码如下:


a_proxy.html是A域下提供好的中间代理页面,它负责读取location.hash里面的width和height的值,然后设置与 它同域下的a.html中的iframe的宽和高.

Js代码
代码如下:
var pParentFrame = parent.parent.document.getElementById("aIframe");
var locationUrlHash = parent.parent.frames["aIframe"].frames["iframeProxy"].location.hash;
pParentFrame.style.width = locationUrlHash.split("#")[1].split("|")[0]+"px";
pParentFrame.style.height = locationUrlHash.split("#")[1].split("|")[1]+"px";
var pParentFrame = parent.parent.document.getElementById("aIframe");
var locationUrlHash = parent.parent.frames["aIframe"].frames["iframeProxy"].location.hash;
pParentFrame.style.width = locationUrlHash.split("#")[1].split("|")[0]+"px";
pParentFrame.style.height = locationUrlHash.split("#")[1].split("|")[1]+"px";

这样的话a.html中的iframe就自适应为b.html的宽和高了.

其他一些类似js跨域操作问题也可以按这个思路去解决

文档

js跨域问题之跨域iframe自适应大小实现代码_javascript技巧

js跨域问题之跨域iframe自适应大小实现代码_javascript技巧: 代码如下: function setHeight(){ var dHeight = document.documentElement.scrollHeight; var t = document.createElement(div); t.innerHTML = ''; document.documentElement.appendChild(
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top