iframe的基本介紹與使用
一、介紹
iframe(內(nèi)嵌框架)是 HTML 中一種用于將一個(gè)網(wǎng)頁(yè)嵌入到另一個(gè)網(wǎng)頁(yè)中的標(biāo)簽,它可以在一個(gè)頁(yè)面中顯示來(lái)自其他頁(yè)面的內(nèi)容。在網(wǎng)頁(yè)中,使用<iframe>標(biāo)簽可以將一個(gè)網(wǎng)頁(yè)嵌套在另一個(gè)網(wǎng)頁(yè)中,實(shí)現(xiàn)網(wǎng)頁(yè)間的互聯(lián)互通。
二、使用
<iframe>標(biāo)簽的基本用法如下:
<iframe src="URL"></iframe>
三、屬性
| 屬性 | 描述 |
|---|---|
| allow | 允許特定功能的列表,如fullscreen,geolocation等 |
| allowfullscreen | 指定是否允許在iframe中使用全屏模式 |
| allowpaymentrequest | 指定是否允許在iframe中進(jìn)行支付請(qǐng)求 |
| allowtransparency | 指定iframe是否可以是透明的 |
| class | 為iframe定義一個(gè)或多個(gè)類名 |
| frameborder | 指定是否在iframe周圍顯示邊框 |
| height | 指定iframe的高度 |
| importance | 指定iframe對(duì)頁(yè)面內(nèi)容的重要性 |
| loading | 指定iframe加載時(shí)的行為 |
| name | 為iframe定義一個(gè)名稱 |
| referrerpolicy | 指定如何發(fā)送referer HTTP標(biāo)頭 |
| sandbox | 啟用iframe的沙盒模式,提高安全性 |
| src | 指定要在iframe中顯示的文檔的URL |
| srcdoc | 在iframe中嵌入HTML代碼而不是外部文檔 |
| style | 定義iframe的CSS樣式 |
| title | 為iframe定義一個(gè)標(biāo)題 |
| width | 指定iframe的寬度 |
四、注意
雖然 <iframe> 標(biāo)簽可以很方便地實(shí)現(xiàn)上述功能,但是需要注意以下幾點(diǎn):
- 嵌入的網(wǎng)頁(yè)必須與主頁(yè)面同源,否則會(huì)受到瀏覽器的安全限制。
- 嵌入的網(wǎng)頁(yè)可能會(huì)影響頁(yè)面性能和加載速度,特別是當(dāng)嵌入的網(wǎng)頁(yè)包含大量的資源(如圖片、CSS 和 JavaScript)時(shí)。
- 嵌入的網(wǎng)頁(yè)可能會(huì)被惡意攻擊者用于釣魚或注入惡意代碼的攻擊,因此需要謹(jǐn)慎使用。
總之,在使用 <iframe> 標(biāo)簽時(shí),需要仔細(xì)權(quán)衡其優(yōu)缺點(diǎn),確保安全和性能。
五、傳值
5.1 URL傳參
可以在iframe的src屬性中使用查詢參數(shù)(也稱為URL參數(shù))將數(shù)據(jù)傳遞到嵌入的頁(yè)面。例如,假設(shè)iframe嵌入的頁(yè)面URL是 index.com/page.html,那么可以使用如下的URL來(lái)傳遞數(shù)據(jù):
<iframe src="index.com/page.html?param1=value1¶m2=value2"></iframe>
在嵌入的頁(yè)面中,可以使用JavaScript獲取查詢參數(shù)并使用它們:
var params = new URLSearchParams(window.location.search);
var param1 = params.get('param1');
var param2 = params.get('param2');或者寫一個(gè)函數(shù)獲取對(duì)應(yīng)的值(該方法來(lái)自拓維的一位前端工程師大佬):
//從url獲取參數(shù)
export const getQuery = (name: string, url?: string) => {
const params = new URLSearchParams(url || window.location.search);
const value = params.get(name);
if (value) {
return value;
}
return getQueryString(name, url);
};
export const getQueryString = (name: string, url?: string) => {
const reg = new RegExp('(^|&|/?)' + name + '=([^&]*)(&|$)', 'i');
const r = encodeURI(url || window.location.search || window.location.href || window.location.hash)
.substr(1)
.match(reg);
if (r != null) return unescape(r[2]);
return null;
};5.2 postMessage()傳參
postMessage()方法是一種用于在不同窗口或文檔之間傳遞消息的通用方法,它可以實(shí)現(xiàn)跨域通信。在使用postMessage()方法時(shí),需要在發(fā)送消息的窗口(發(fā)送方)和接收消息的窗口(接收方)中分別編寫代碼。
5.2.1 子傳父:
子:
// 發(fā)送消息給接收方窗口
window.parent.postMessage("Hello, parent!", "http://parent.com");父:
// 監(jiān)聽message事件,接收消息
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event) {
// 判斷消息來(lái)源是否是指定的發(fā)送方窗口
if (event.origin === "http://child.com") {
// 處理接收到的消息
console.log(event.data);
}
}5.2.2 父?jìng)髯樱?/h4>
父:
創(chuàng)建實(shí)例對(duì)象:
const iframe = document.getElementById('my-iframe');
const iframeWindow = iframe.contentWindow;發(fā)送消息:
const message = { type: 'GREETINGS', data: 'Hello, child!' };
const targetOrigin = 'http://child.com'; // 指定接收方的源
iframeWindow.postMessage(message, targetOrigin);子:
接收消息
window.addEventListener('message', receiveMessage, false);
function receiveMessage(event) {
if (event.origin === 'http://parent.com') { // 驗(yàn)證消息來(lái)源
console.log(event.data); // 處理接收到的消息
}
}以上就是iframe的基本介紹與使用的詳細(xì)內(nèi)容,更多關(guān)于iframe介紹與使用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
[JSF]使用DataModel處理表行事件的實(shí)例代碼
在使用JSF中,最常用的恐怕就要屬于表格的處理了。使用DataModel可以方便地進(jìn)行對(duì)表行的處理:2013-08-08
JavaScript使用JSEncrypt對(duì)數(shù)據(jù)加解密
文章介紹了在Web開發(fā)中使用RSA非對(duì)稱加密算法保護(hù)敏感信息的方法,詳細(xì)講解了JSEncrypt庫(kù)的安裝、使用和注意事項(xiàng),此外,還提供了生成公私鑰、動(dòng)態(tài)獲取公鑰以及安全性建議等實(shí)用內(nèi)容,需要的朋友可以參考下2026-05-05
使用純javascript實(shí)現(xiàn)放大鏡效果
本文給大家分享的是使用純javascript實(shí)現(xiàn)放大鏡效果的代碼,并附上封裝的步驟,做電商程序的小伙伴們一定不要錯(cuò)過(guò)。2015-03-03
JS匿名函數(shù)和匿名自執(zhí)行函數(shù)概念與用法分析
這篇文章主要介紹了JS匿名函數(shù)和匿名自執(zhí)行函數(shù)概念與用法,結(jié)合實(shí)例形式分析了匿名函數(shù)和匿名自執(zhí)行函數(shù)的概念、功能、應(yīng)用場(chǎng)景及相關(guān)使用技巧,需要的朋友可以參考下2018-03-03
JavaScript 對(duì)象合并的幾種方法小結(jié)
本文主要介紹了JavaScript 對(duì)象合并的幾種方法小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
js實(shí)現(xiàn)鼠標(biāo)經(jīng)過(guò)表格行變色的方法
這篇文章主要介紹了js實(shí)現(xiàn)鼠標(biāo)經(jīng)過(guò)表格行變色的方法,涉及javascript表格節(jié)點(diǎn)樣式及鼠標(biāo)事件的相關(guān)操作技巧,需要的朋友可以參考下2015-05-05
JS使用parseInt解析數(shù)字實(shí)現(xiàn)求和的方法
這篇文章主要介紹了JS使用parseInt解析數(shù)字實(shí)現(xiàn)求和的方法,涉及javascript表單元素值的獲取及parseInt解析轉(zhuǎn)換字符串為數(shù)字的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08

