首頁 > web前端 > js教程 > 如何動態調整iframe高度並繞過同源策略?

如何動態調整iframe高度並繞過同源策略?

Mary-Kate Olsen
發布: 2024-12-17 13:51:16
原創
714 人瀏覽過

How Can I Dynamically Adjust Iframe Height While Bypassing the Same-Origin Policy?

動態 iframe 高度調整

透過 iframe 整合外部來源的內容時,確保正確的高度調整變得至關重要。本文深入研究了一種繞過同源策略的解決方案,允許 iframe 自動調整大小以適應其內容。

利用瀏覽器怪癖繞過同源策略

關鍵在於利用瀏覽器的一個怪癖,允許父域與iframe 通信,而iframe 無法直接與其父域通信。此通訊層次結構如下所示:

Page Can Communicate With
www.foo.com/home.html N/A (parent)
www.bar.net/framed.html www.foo.com/helper.html (child)
www.foo.com/helper.html www.foo.com/home.html (parent)

使用URL 參數傳遞高度資訊

要確定iframe 的高度,內容頁(www.bar.net/ framed.html)計算它並透過URL 參數設定輔助iframe(位於與父級相同的域中)的src 屬性。然後,輔助 iframe 將此資訊轉發給父級,父級可以相應地調整 iframe 高度。

程式碼實作

www.foo.com/home。 html(父級頁):

function resizeIframe(height) {
  // Adjust the iframe height with a slight margin
  document.getElementById('frame_name_here').height = parseInt(height) + 60;
}
登入後複製

www.bar.net/framed.html(子頁):

function iframeResizePipe() {
  // Calculate and pass the height to the helper iframe
  var height = document.body.scrollHeight;
  var pipe = document.getElementById('helpframe');
  pipe.src = 'http://www.foo.com/helper.html?height=' + height + '&cacheb=' + Math.random();
}
登入後複製

www.foo .com/helper.html(說明頁):

function parentIframeResize() {
  // Extract the height from the URL argument
  var height = getParam('height');

  // Communicate the height to the parent page
  parent.parent.resizeIframe(height);
}
登入後複製

以上是如何動態調整iframe高度並繞過同源策略?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板