本篇还玩“障眼法”,一文解读HTML内联框架Iframes。

简介: 本篇还玩“障眼法”,一文解读HTML内联框架Iframes。

写在开篇

假设有一个需求,想要在网页内显示其它网页,怎么搞?很简单,可以用iframe来解决,那啥是iframe?本篇的主题就是它,接下来我们一一解剖它的用法。

嵌入第三方url页面

我们先来两个测试场景,对比一下,啥场景呢?就是可被嵌入的页面和不可被嵌入的页面。

下面这2个页面是不可被嵌入的

  • 嵌入python的官网主页
<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>彩虹运维技术栈社区主页</title>
    </head>
    <body>
        <iframe src="https://www.python.org/"></iframe>
    </body>
</html>

效果如下图:

  • 嵌入百度主页
<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>彩虹运维技术栈社区主页</title>
    </head>
    <body>
        <iframe src="https://www.baidu.com/"></iframe>
    </body>
</html>

效果如下:

下面这2个https的页面是可被嵌入的

  • 嵌入zabbix官网的主页
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>彩虹运维技术栈社区主页</title>
</head>
<body>
    <iframe src="https://www.zabbix.com/cn/"></iframe>
</body>
</html>

效果如下图:

  • 嵌入prometheus官网主页
<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>彩虹运维技术栈社区主页</title>
    </head>
    <body>
        <iframe src="https://prometheus.io/"></iframe>
    </body>
</html>

效果如下图:

好了,测试完上面的两个场景,现在就产生一个疑问了。为什么有的页面可以被嵌入?而有的页面不能被嵌入呢?答案就是:同源策略的限制所致,第三方的web服务器端并没有允许iframe的访问,这就是核心问题之所在。

关于同源策略、以及什么是跨域访问、cookie重写等等这些知识点,以后笔者都会抽时间慢慢给大家逐一剖析哈!咱们目前阶段的主题是放在html中,后续就是css、js,然后就是前端框架vue.js,甚至中途还会讲讲Go、Python方面的知识,Web框架等等。

嵌入本地的页面

小栗子,我们在home.html页面中嵌入本地test.html页面

  • home.html
<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>彩虹运维技术栈社区主页</title>
    </head>
    <body>
        <iframe src="./test.html" style="height:200px;width:700px;" title="TtrOpsStack" ></iframe>
    </body>
</html>
  • test.html
<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>运维开发工程师,攻破前端技能。</title>
    </head>
    <body>
        <h1 id="WeChatPublicID">点击查看彩虹运维技术栈社区的微信公众号</h1>
        <button onclick="dis_wechat_public_id()">速度点击查看</button>
        <script>
            function dis_wechat_public_id() {
                document.getElementById("WeChatPublicID").innerHTML = "微信公众号ID:TtrOpsStack"
            }
        </script>
    </body>
</html>

效果如下图:

注意到了嘛?在home.html文件的代码中,iframe的src属性只需要指向本地的html文件路径即可,且在用style中还设置了CSS属性的高度和宽度哦!

玩个“障眼法”

什么是“障眼法”?这是笔者对下面小栗子的一个形容词罢了。

<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>彩虹运维技术栈社区主页</title>
    </head>
    <body>
        <iframe src="https://apache.org/" style="border:none;height:2000px;width:2000px;" title="TtrOpsStack"></iframe>
    </body>
</html>

效果如下图:

看到上面的效果了嘛?真真假假,假假真真,不知道的还以为是真的直接访问了apache的官网呢,鬼知道中间还隔了一道中间商。为啥会出现这样的障眼法呢?原因就是style中的CSS属性border在搞鬼,它的值为none,也就是去掉边框的意思。再把宽度和高度调大,撑满整个页面,这个障眼法的效果就出来了。是不是很好玩呢?

写在最后

好了,本篇讲解的HTML iframe知识点就这么愉快的结束了。一个很小的知识点,虽不起眼,但它却是能让我们在未来可以学透更上层技能的基础。还是那句话,基础不牢,地动山摇呀!技能这东西,有时候不仅要向上学,还要向下学,甚至是上下结合的学习。把基础和原理知识打牢,当学习更上层技能时候才会更容易的去理解。有的组件、技能看似热门、高端,其实都是从基础的东西演变而来的,所以,不管是哪个技术领域,基础知识和原理知识的重要性是可想而知了吧?

相关文章
|
17天前
|
移动开发 前端开发 JavaScript
HTML 框架高阶用法
HTML框架,或前端框架,如Bootstrap、Vue.js等,显著提升了Web应用开发的速度与用户体验。本文介绍了一些高级技巧,如自定义样式与组件、响应式设计实践、JavaScript功能增强及性能优化策略等,帮助开发者更好地利用这些工具,实现高效开发并提升应用性能与灵活性。
N..
|
5月前
|
前端开发 JavaScript 开发者
HTML框架
HTML框架
N..
40 1
|
5月前
|
前端开发 搜索推荐 JavaScript
HTML 框架
HTML 框架
|
2月前
|
前端开发 UED
学会了HTML中的块级元素和内联元素 SO 酷了
学会了HTML中的块级元素和内联元素 SO 酷了
学会了HTML中的块级元素和内联元素 SO 酷了
|
2月前
|
前端开发
HTML+CSS基础知识(6)背景的设置、表格的设计、表单的设计和框架集
这篇文章详细介绍了如何在HTML和CSS中设置背景、设计表格、创建表单以及使用框架集,并通过代码示例和测试结果展示了具体的实现方法和效果。
HTML+CSS基础知识(6)背景的设置、表格的设计、表单的设计和框架集
|
2月前
|
XML JavaScript 测试技术
Web自动化测试框架(基础篇)--HTML页面元素和DOM对象
本文为Web自动化测试入门指南,介绍了HTML页面元素和DOM对象的基础知识,以及如何使用Python中的Selenium WebDriver进行元素定位、操作和等待机制,旨在帮助初学者理解Web自动化测试中的关键概念和操作技巧。
40 1
|
4月前
|
前端开发 JavaScript 开发者
HTML基础-块级元素与内联元素
【6月更文挑战第6天】HTML中的元素分为块级和内联元素,两者在网页布局中扮演重要角色。块级元素占用整行,可设置宽高,常用于组织结构;内联元素只占内容宽度,常用于文本样式和链接。理解它们的区别并正确选择是创建清晰布局的关键。常见问题包括错误选择元素、忽视默认样式和不熟悉`display`属性。解决方法包括根据语义选择元素、清除默认样式以及灵活使用`display`属性转换元素行为。熟练掌握这些能提升网页的语义化、可访问性和布局效率。
47 0
|
5月前
|
前端开发 JavaScript 开发者
【专栏:HTML与CSS实践篇】CSS框架(Bootstrap/Foundation)快速上手
【4月更文挑战第30天】Bootstrap和Foundation是两种流行的CSS框架,用于构建响应式网页。它们包含预定义的样式、栅格系统和组件,加速开发流程。Bootstrap以其12列栅格系统闻名,而Foundation提供更定制化和模块化选项。了解并熟练运用这些框架的基本概念和组件,结合最佳实践和性能优化,能帮助开发者高效创建符合现代设计趋势的网页项目。
103 3
|
5月前
|
前端开发 JavaScript 搜索推荐
react-app框架——使用monaco editor实现online编辑html代码编辑器
react-app框架——使用monaco editor实现online编辑html代码编辑器
243 3
|
5月前
|
机器学习/深度学习 前端开发 JavaScript
探寻前端巨变:从HTML到现代框架的发展历程
探寻前端巨变:从HTML到现代框架的发展历程
76 2
下一篇
无影云桌面