可以的,HTML <iframe>
內的腳本(script)是可以與外部的腳本進行通訊的,不過需要注意一些安全性問題。
在 <iframe>
內的腳本可以透過以下方式與外部腳本進行通訊:
- window.parent: 在
<iframe>
內的腳本中,可以使用 window.parent
來訪問包含該 <iframe>
的父級窗口,這樣就可以通過父級窗口的全局對象來進行通訊。
// 在 <iframe> 內的腳本中
window.parent.postMessage('這是從 iframe 來的訊息', '*');
然後,在外部腳本中,可以監聽來自 <iframe>
的訊息:
window.addEventListener('message', function(event) {
if (event.origin !== 'https://iframe所在的網址') return; // 避免跨域攻擊
// 處理從 <iframe> 來的訊息
console.log('接收到來自 iframe 的訊息:', event.data);
});
- window.frames: 你也可以使用
window.frames
來直接訪問包含 <iframe>
的窗口,並調用其方法或訪問其屬性。
// 在 <iframe> 內的腳本中
window.frames['frameName'].myFunction();
需要注意的是,跨域通訊可能會受到同源策略的限制,因此需要確保通訊雙方位於相同的源(origin)或已設置適當的跨域通訊策略。並且在設計中要謹慎考慮安全性,以防止潛在的安全風險。