登录
首页 >  文章 >  前端

跨域情况下,如何通过 JavaScript 获取目标网页的高度?

时间:2024-11-19 08:31:13 106浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《跨域情况下,如何通过 JavaScript 获取目标网页的高度?》,文章讲解的知识点主要包括,如果你对文章方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

跨域情况下,如何通过 JavaScript 获取目标网页的高度?

跨域情况下如何通过 javascript 获取目标网址网页高度

在跨域的情况下,获取其他网页的高度可能有所限制。以下是一个需要考虑的示例:

<div class="page-work">
  <iframe id="c_iframe" width="" height="0" scrolling="no" src="www.baidu.com"></iframe>
</div>

由于父页面无法直接访问目标网页的 window 对象,因此无法直接获取其高度。要解决这个问题,可以考虑以下解决方案:

使用 postmessage api

postmessage api 允许页面对不同域进行通信。要使用此 api,需要在目标网页和父网页中分别实现消息发送和接收功能。具体步骤如下:

  • 在父页面中,添加以下脚本:
const iframe = document.getelementbyid('c_iframe');

iframe.onload = () => {
  // 向目标网页发送消息
  iframe.contentwindow.postmessage('getheight', '*');
};

window.addeventlistener('message', (event) => {
  if (event.origin !== 'www.baidu.com') {
    return;
  }

  // 接收目标网页返回的高度并设置 iframe 高度
  const height = event.data;
  iframe.height = height;
});
  • 在目标网页中,添加以下脚本:
window.addEventListener('message', (event) => {
  if (event.data !== 'getHeight') {
    return;
  }

  // 向父页面发送网页高度
  const height = document.documentElement.offsetHeight;
  event.source.postMessage(height, '*');
});

注意:如果无法控制目标网页,此解决方案将无法使用。此时,获取目标网页高度是不可能的。

今天带大家了解了的相关知识,希望对你有所帮助;关于文章的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>