了解使用HTML`iframe`标签的基本知识
iframe 标签允许我们将来自其他来源(其他网站)的内容嵌入到我们的网页中。
从技术上讲,iframe创建了一个新的嵌套浏览环境。这意味着iframe中的任何内容都不会干扰到父页面,反之亦然。JavaScript和CSS不会 "泄漏 "到/从iframes中。
许多网站使用iframes来执行各种任务。你可能熟悉Codepen、Glitch或其他网站,它们允许你在页面的一个部分进行编码,并在一个框中看到结果。这就是一个iframe。
你可以用这种方式创建一个。
<iframe src="page.html"></iframe>
你也可以加载一个绝对的URL。
<iframe src="https://site.com/page.html"></iframe>
你可以设置一组宽度和高度参数(或使用CSS设置),否则iframe将使用默认值,即一个300x150像素的盒子。
<iframe src="page.html" width="800" height="400"></iframe>
Srcdoc
srcdoc 属性让你指定一些要显示的内联HTML。这是一个替代src ,但是最近的,在Edge 18和更低的版本以及IE中不支持。
<iframe srcdoc="<p>My dog is a good dog</p>"></iframe>
沙盒
sandbox 属性允许我们限制iframes中允许的操作。
如果我们省略它,一切都被允许。
<iframe src="page.html"></iframe>
如果我们把它设置为"",则什么都不允许。
<iframe src="page.html" sandbox=""></iframe>
我们可以通过在sandbox 属性中添加选项来选择要允许的内容。你可以通过在中间加一个空格来允许多个选项。下面是一个你可以使用的选项的不完整列表。
allow-forms: 允许提交表单allow-modals允许打开模态窗口,包括在JavaScript中调用alert()allow-orientation-lock允许锁定屏幕方向allow-popups允许弹出窗口,使用 和 链接window.open()target="_blank"allow-same-origin将正在加载的资源视为同一来源allow-scripts允许加载的iframe运行脚本(但不创建弹出窗口)。allow-top-navigation给予顶级浏览环境对iframe的访问权
允许
目前是实验性的,只有基于Chromium的浏览器支持,这是在父窗口和iframe之间共享资源的未来。
它类似于sandbox 属性,但让我们允许特定的功能,包括。
accelerometer允许访问传感器API加速计接口ambient-light-sensor允许访问传感器API的环境光传感器(AmbientLightSensor)接口autoplay允许自动播放视频和音频文件camera允许从getUserMedia API访问摄像头display-capture允许使用getDisplayMedia API访问屏幕内容fullscreen允许访问全屏模式geolocation允许访问地理定位APIgyroscope允许访问传感器API的陀螺仪接口magnetometer允许访问传感器API磁力计接口microphone允许使用getUserMedia API访问设备的麦克风midi允许访问Web MIDI APIpayment允许访问支付请求APIspeaker允许访问通过设备扬声器播放音频usb允许访问WebUSB API。vibrate允许访问振动APIvr允许访问WebVR API
推荐人
当加载一个iframe时,浏览器会在Referer 头部发送关于谁在加载它的重要信息(注意单r ,一个我们必须接受的错字)。
referrer的拼写错误源于计算机科学家Phillip Hallam-Baker将该字段纳入HTTP规范的最初提议。这个错误的拼写在它被纳入RFC1945标准文件的时候就已经定型了。
referrerpolicy 属性让我们设置在加载iframe时向其发送的referrer。referrer是一个HTTP头,让页面知道谁在加载它。这些是允许的值。
no-referrer-when-downgrade这是默认值,当当前页面通过HTTPS加载而iframe通过HTTP协议加载时,会发送referrer。no-referrer不发送referrer头origin发送referrer头,但只包含来源(端口、协议、域),而不是默认的来源+路径origin-when-cross-origin当在iframe中从同一来源(端口、协议、域)加载时,referrer以其完整的形式被发送(来源+路径)。否则只发送原点same-origin仅当在iframe中从同一来源(端口、协议、域)加载时,发送referrer。strict-origin如果当前页面是通过HTTPS加载的,并且iframe也是通过HTTPS协议加载的,则发送起源作为referrer。如果该框架是通过HTTP加载的,则不发送任何信息strict-origin-when-cross-origin当在同一来源上工作时,发送起源+路径作为referrer。如果当前页面是通过HTTPS加载的,并且iframe也是通过HTTPS协议加载的,则发送原点作为referrer。如果iframe是通过HTTP加载的,则不发送任何信息。unsafe-url发送原点+路径作为推荐人,即使是在从HTTP加载资源而当前页面通过HTTPS加载时也是如此。