tnblog
首页
视频
资源
登录
愿你出走半生,归来仍是少年
排名
3
文章
317
粉丝
22
评论
14
bootstrap 栅格布局一小例子
剑轩 : 后端写样式有点痛苦哇
一点flex布局的运用
剑轩 : 后端写样式有点痛苦哇
vue.js常用指令
剑轩 : 可以可以,多总结一点
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

iframe自适应高度与配合net core使用

10368人阅读 2019/2/11 21:57 总访问:2060103 评论:0 收藏:0 手机
分类: 前端


去掉iframe边框

frameborder="0"


去掉滚动条

scrolling="no"


iframe 自适应高度

如果内容是固定的,那么就很简单,可以通过直接给它定义一个高度和被嵌套的高度一样就可以了

内容宽度变化的iframe高度自适应

  1. <iframe src="backtop.html" frameborder="0" scrolling="no" id="test" onload="this.height=100"></iframe>
  2. <script type="text/javascript">
  3. function reinitIframe(){
  4. var iframe = document.getElementById("test");
  5. try{
  6. var bHeight = iframe.contentWindow.document.body.scrollHeight;
  7. var dHeight = iframe.contentWindow.document.documentElement.scrollHeight;
  8. var height = Math.max(bHeight, dHeight);
  9. iframe.height = height;
  10. console.log(height);
  11. }catch (ex){}
  12. }
  13. window.setInterval("reinitIframe()"200);
  14. </script>


跨域下的iframe自适应高度

跨域的时候,由于js的同源策略,父页面内的js不能获取到iframe页面的高度。需要一个页面来做代理。

方法如下:假设www.a.com下的一个页面a.html要包含www.b.com下的一个页面c.html。

我们使用www.a.com下的另一个页面agent.html来做代理,通过它获取iframe页面的高度,并设定iframe元素的高度。


a.html中包含iframe:

  1. <iframe src="http://www.b.com/c.html" id="Iframe" frameborder="0" scrolling="no" style="border:0px;"></iframe>

在c.html中加入如下代码:

  1. <iframe id="c_iframe"  height="0" width="0"  src="http://www.a.com/agent.html" style="display:none" ></iframe>
  2. <script type="text/javascript">
  3. (function autoHeight(){
  4. var b_width = Math.max(document.body.scrollWidth,document.body.clientWidth);
  5. var b_height = Math.max(document.body.scrollHeight,document.body.clientHeight);
  6. var c_iframe = document.getElementById("c_iframe");
  7. c_iframe.src = c_iframe.src + "#" + b_width + "|" + b_height;  // 这里通过hash传递b.htm的宽高
  8. })();
  9. </script>

然后,agent.html中放入一段js:

  1. <script type="text/javascript">
  2. var b_iframe = window.parent.parent.document.getElementById("Iframe");
  3. var hash_url = window.location.hash;
  4. if(hash_url.indexOf("#")>=0){
  5. var hash_width = hash_url.split("#")[1].split("|")[0]+"px";
  6. var hash_height = hash_url.split("#")[1].split("|")[1]+"px";
  7. b_iframe.style.width = hash_width;
  8. b_iframe.style.height = hash_height;
  9. }
  10. </script>


画了一个简单粗糙的思路图:

但是在net core下去使用一直不行

经过查看在net core中iframe如果是跨域的根本就没有被加载,所以js这些根本没有去执行

连请求都没有去请求

找了很久原因应该是net core中默认使用的是htts:

然而:

HTTPS页面里动态的引入HTTP资源,比如引入一个js文件,会被直接block掉的.在HTTPS页面里通过AJAX的方式请求HTTP资源,也会被直接block掉的。 


然后发现了问题其实就不然解决了

在net core中使用http去访问就好了,net core中默认开启了一个https,一个http我们使用http那个端口去访问就好了

这里可以看到使用http的是5000端口


然后去访问就可以加载成功了!





参考:http://caibaojian.com/iframe-adjust-content-height.html




欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

解决:iframe登录过期跳转登录页面嵌套问题

我们在登录信息过期之后,要跳转到登录页面。这时如果你用的是iframe框架的话,就会出现登录界面是嵌套在框架里面的,如下...

iframe展示pdf

&lt;iframeclass=&quot;scroll-style-8&quot;id=&quot;filesldsptPDF&quot;scrolling=&quot;yes&quot;src=&quot;~/Scripts/...

代替iframe 标签实现页面引入另一个页面

code:varsrc=&quot;引入页面的url&quot;; $.get(src,function(data){ $(&quot;当前页面要显示引入页面的id或者class&quot...

调用iframe里边的方法

加载一个iframe &lt;iframe id=&quot;son&quot; src=&quot;a.html&quot;&gt;&lt;/iframe&gt; iframe里边的内容 &lt;body...

windows对象中获取vue对象。vue中使用iframe页面嵌套后,嵌套页里边页面跳转问题,实现外层路由的跳转,实现打开新的tab页面

某些情况下使用iframe可以降低一下耦合度,分隔开项目,不会让一个项目越来越大。 [TOC]vue嵌套iframe页面的方法 比如这里...

net core 使用 EF Code First

下面这些内容很老了看这篇:https://www.tnblog.net/aojiancc2/article/details/5365 项目使用多层,把数据库访问...

.net mvc分部页,.net core分部页

.net分部页的三种方式第一种:@Html.Partial(&quot;_分部页&quot;)第二种:@{ Html.RenderPartial(&quot;分部页&quot;);}...

StackExchange.Redis操作redis(net core支持)

官方git开源地址https://github.com/StackExchange/StackExchange.Redis官方文档在docs里边都是官方的文档通过nuget命令下...

.net core 使用session

tip:net core 2.2后可以直接启用session了,不用在自己添加一次session依赖,本身就添加了使用nuget添加引用Microsoft.AspN...

通俗易懂,什么是.net?什么是.net Framework?什么是.net core?

朋友圈@蓝羽 看到一篇文章写的太详细太通俗了,搬过来细细看完,保证你对.NET有个新的认识理解原文地址:https://www.cnblo...

asp.net core2.0 依赖注入 AddTransient与AddScoped的区别

asp.net core主要提供了三种依赖注入的方式其中AddTransient与AddSingleton比较好区别AddTransient瞬时模式:每次都获取一...

.net core 使用 Kestrel

Kestrel介绍 Kestrel是一个基于libuv的跨平台web服务器 在.net core项目中就可以不一定要发布在iis下面了Kestrel体验可以使...

net core使用cookie

net core中可以使用传统的cookie也可以使用加密的cookieNET CORE中使用传统cookie设置:HttpContext.Response.Cookies.Appe...

net core项目结构简单分析

一:wwwrootwwwroot用于存放网站的静态资源,例如css,js,图片与相关的前端插件等lib主要是第三方的插件,例如微软默认引用...

net core使用EF之DB First

一.新建一个.net core的MVC项目新建好项目后,不能像以前一样直接在新建项中添加ef了,需要用命令在添加ef的依赖二.使用Nug...