Home Web Front-end JS Tutorial How Can I Dynamically Resize an Iframe Based on its Content Height Across Domains?

How Can I Dynamically Resize an Iframe Based on its Content Height Across Domains?

Dec 10, 2024 am 10:45 AM

How Can I Dynamically Resize an Iframe Based on its Content Height Across Domains?

Resizing an Iframe Based on Content Height

When working with iframes to display content from other domains, adjusting their height to fit the contents can be a challenge due to the same-origin policy. This policy restricts JavaScript communication between pages on different domains.

Solution:

To overcome this limitation, a multi-step approach is required that involves both the iframe content and the framing page.

1. Cross-Domain Communication:

Since the iframe content and the framing page are on different domains, direct communication is not possible. However, a "pipe" mechanism can be established using another iframe.

2. Height Calculation and Message Passing:

When the iframe content loads, it calculates its height and sets the source of a hidden iframe on the framing page to a helper page on the same domain, passing the calculated height as an argument in the URL.

3. Helper Page and Parent Frame Resize:

The helper page on the same domain receives the height from the iframe content and communicates it to the parent frame, which can then resize the iframe accordingly.

Code:

Framing Page:

<script type="text/javascript">
  function resizeIframe(height) {
    document.getElementById('myIframe').height = height + 60;
  }
</script>
<iframe>
Copy after login

Iframe Content:

<script type="text/javascript">
  function setIframeHeight() {
    var height = document.body.scrollHeight;
    document.getElementById('iframeResizer').src = 'helper.com?height=' + height;
  }
</script>
<iframe>
Copy after login

Helper Page:

<script type="text/javascript">
  function resizeParentIframe() {
    var height = getParam('height');
    parent.parent.resizeIframe(height);
  }
  function getParam(name) {
    var regex = new RegExp("[\?&]" + name + "=([^&#]*)");
    var results = regex.exec(window.location.href);
    return results ? results[1] : "";
  }
</script>
Copy after login

Note:

This solution assumes that the same-origin policy allows JavaScript communication between the iframe content and the helper page. If this is not the case, additional measures may be required.

The above is the detailed content of How Can I Dynamically Resize an Iframe Based on its Content Height Across Domains?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Replace String Characters in JavaScript Replace String Characters in JavaScript Mar 11, 2025 am 12:07 AM

Replace String Characters in JavaScript

jQuery Check if Date is Valid jQuery Check if Date is Valid Mar 01, 2025 am 08:51 AM

jQuery Check if Date is Valid

jQuery get element padding/margin jQuery get element padding/margin Mar 01, 2025 am 08:53 AM

jQuery get element padding/margin

10 jQuery Accordions Tabs 10 jQuery Accordions Tabs Mar 01, 2025 am 01:34 AM

10 jQuery Accordions Tabs

10 Worth Checking Out jQuery Plugins 10 Worth Checking Out jQuery Plugins Mar 01, 2025 am 01:29 AM

10 Worth Checking Out jQuery Plugins

HTTP Debugging with Node and http-console HTTP Debugging with Node and http-console Mar 01, 2025 am 01:37 AM

HTTP Debugging with Node and http-console

jquery add scrollbar to div jquery add scrollbar to div Mar 01, 2025 am 01:30 AM

jquery add scrollbar to div

Custom Google Search API Setup Tutorial Custom Google Search API Setup Tutorial Mar 04, 2025 am 01:06 AM

Custom Google Search API Setup Tutorial

See all articles