npm 包 @vkammerer/postmessage-raf 使用教程

简介

@vkammerer/postmessage-raf 是一个 JavaScript 库,用于在跨域 iframe 之间使用 requestAnimationFrame 进行通信。它解决了由于同源策略所带来的跨域 iframe 通信问题。

安装和使用

安装

使用 npm 进行安装:

--- ------- ------ --------------------------

使用

在要使用 postmessage-raf 的 iframe 页面中,引入 postmessage-raf:

------ -------------- ---- -----------------------------

然后可以创建一个实例:

----- ------- - --- ----------------
       ------- --------------
       ------- ---
    ---

其中,target 是事件的接收方,origin 是发送方域名。

接着,就可以使用发送消息了:

------------------- ---- --------

在父页面中也要引入 postmessage-raf,并创建一个实例:

----- ------- - --- ----------------
       ------- -------
       ------- ---
    ---

接收消息:

--------------------- ------- -- -
  -------------------- ---- ------ ----------------
---

示例

-- ----- ----
------ -------------- ---- -----------------------------

----- ------- - --- ----------------
  ------- --------------
  ------- ---
---

------------------- ---- --------

-- ------ ----
------ -------------- ---- -----------------------------

----- ------- - --- ----------------
  ------- -------
  ------- ---
---

--------------------- ------- -- -
  -------------------- ---- ------ ----------------
---

深入理解

requestAnimationFrame

在了解 postmessage-raf 如何工作之前,我们需要了解 requestAnimationFrame。

requestAnimationFrame 是一个高性能且流畅的方式,用于在每个浏览器重绘之前更新动画。它位于一个执行队列中,每次更新队列中的回调函数,以便在浏览器填充屏幕之前调用。

postMessage

postMessage 是 HTML5 中的一个 API,用于在跨域窗口之间传递数据。它可以向另一个窗口发送消息,并指定接收窗口的来源,以保证安全性和隐私。

postmessage-raf

postmessage-raf 利用 requestAnimationFrame 的重绘周期,解决了在跨域 iframe 之间使用 postMessage 的跨域通信问题。在发送方和接收方之间建立一个 requestAnimationFrame 循环,发送方使用 postMessage 来发送信息,接收方监听 postMessage 事件,这样就可以达到在跨域 iframe 之间使用 requestAnimationFrame 进行通信的目的。

总结

本文介绍了如何使用 npm 包 @vkammerer/postmessage-raf 进行跨域 iframe 之间使用 requestAnimationFrame 进行通信。除了基本安装和使用,本文还深入讲解了 requestAnimationFrame 和 postMessage 的基本原理,以及 postmessage-raf 库实现跨域通信的原理。希望这篇文章可以帮助你在前端开发过程中处理 iframe 通信的问题。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60055ab181e8991b448d8439


猜你喜欢

  • npm 包 machinepack-ncbi 使用教程

    前言 对于生物医学领域的研究人员来说,NCBI 数据库(National Center for Biotechnology Information)是必不可少的资源之一。

    2 年前
  • npm 包 np-autocomplete 使用教程

    前言 在前端开发中,自动补全是一个非常常见的需求。一般来说,我们可以在前端使用 JavaScript 实现这个功能,但是这需要开发者自己去实现并且需要考虑很多细节,比如如何进行数据过滤、如何进行列表展...

    2 年前
  • npm 包 gumga-info-ng 使用教程

    在前端开发中,我们经常需要使用各种各样的第三方库来快速实现一些功能。而 npm 包就是其中比较常用的一种。其中一个常用的 npm 包是 gumga-info-ng。

    2 年前
  • npm 包 issueviewer 使用教程

    在前端开发中,我们常常需要查看各种开源项目的 Issue,以便了解项目的进展和解决问题。但如果要手动查看所有 Issue,不仅费时费力,而且容易遗漏某些问题。 为了解决这个问题,我们可以使用 npm ...

    2 年前
  • npm 包 react-native-mock-render-fork 使用教程

    前言 React Native 提供了一种高效开发移动应用程序的方式,并且能够使前端开发人员的技能得到更好的推广。在开发 React Native 应用程序时,我们常常需要模拟数据来测试应用程序。

    2 年前
  • npm包Sempli使用教程

    简介 Sempli是一个优秀的npm包,它可以帮助前端开发人员更加高效地构建Web应用程序。Sempli包括了许多有用的功能,如JavaScript代码压缩、图片压缩、文件合并等,这些功能都能够帮助开...

    2 年前
  • npm 包 di4es 使用教程

    简介 di4es 是一个轻量级的 JavaScript 依赖注入框架,帮助前端开发者更方便地管理组件之间的依赖关系,提高代码的可读性和可维护性。 安装 使用 npm 进行安装: --- -------...

    2 年前
  • npm 包 pc-ru 使用教程

    介绍 pc-ru 是一个用于前端项目开发的 npm 包,为网站 PC 端提供基本的 UI 组件以及快速布局。本文将详细介绍 pc-ru 的使用方法,包括安装、引入、布局、组件使用以及相关参数。

    2 年前
  • npm 包 primus-redis-rooms-customauth 使用教程

    在前端开发中,我们经常会用到需要实时通信的功能,例如在线聊天、协同编辑等。primus-redis-rooms-customauth 是一个 npm 包,它可以在实时通信中提供更强大的功能。

    2 年前
  • npm 包 issue_viewer_package 使用教程

    前言 在前端开发过程中,我们时常需要查看 Github issues 相关信息,如 issue 标题、状态、作者、创建时间、更新时间等。这时候,我们可以通过直接访问 Github issues 链接进...

    2 年前
  • npm 包 jquery-mapit 使用教程

    什么是 jquery-mapit? jquery-mapit 是一个基于 jQuery 的插件,用于在网站上展示地图和标记点。它可以让用户轻松地在网站上展示地图,并提供自定义地图标记点的功能,具有一定...

    2 年前
  • npm 包 swagger-ui-build 使用教程

    前言 随着互联网的快速发展,Web 开发变得越来越重要,也越来越复杂。在大多数 Web 开发中,API 是非常重要的组成部分。作为开发人员,我们需要一种简单而又全面的方式来记录和处理这些 API。

    2 年前
  • npm 包 ng-vscroll 使用教程

    介绍 ng-vscroll 是一个 AngularJS 的无限滚动插件,非常适用于滚动大数据集,尤其是对于视口中只有少数几个元素的情况。 通常情况下,无限滚动需要在滚动至底部时手动触发数据加载,这个过...

    2 年前
  • npm 包 sh-input-currency-emvio 使用教程

    背景说明 在前端开发中,有时需要进行货币输入的校验和格式化展示,这时候 npm 包 sh-input-currency-emvio 就发挥了很大的作用。本篇文章将详细介绍使用该 npm 包的方法,以及...

    2 年前
  • npm 包 jquery-ui-pyritephp 使用教程

    介绍 jQuery UI 是一个 jQuery 的用户界面库,包含大量的交互式组件和工具。而 jquery-ui-pyritephp 则是 jQuery UI 的一个衍生版本,它旨在为开发人员提供更好...

    2 年前
  • npm 包 soft-method-override 使用教程

    在前端开发中,很多时候我们需要对 HTTP 请求的方法进行重写,这常常用于模拟某些表单的提交动作,比如在进行 RESTful API 开发中,我们可以通过 PUT 或者 DELETE 方法来对资源进行...

    2 年前
  • npm包guitar-js使用教程

    简介 guitar-js是一个使用于node.js环境下的npm包,提供了一系列的吉他乐谱生成和处理的工具。 在前端开发的过程中,我们经常需要处理吉他乐谱的问题,例如展示和编辑吉他谱,自动转换和生成吉...

    2 年前
  • npm 包 saga-geolocation-observer 使用教程

    简介 saga-geolocation-observer 是一个基于 Redux Saga 和 Web Geolocation API 实现的轻量级地理位置观测器,可用于前端开发中实现位置相关的功能。

    2 年前
  • npm 包 redux-form-field-wrapper 使用教程

    介绍 redux-form-field-wrapper 是一个 React 组件库,它提供了一个包装器,方便使用者在 Redux Form 中对输入框、下拉框、多选框等表单元素进行加工或者进行一些统一...

    2 年前
  • npm 包 frog-jump 使用教程

    介绍 frog-jump 是一个非常有用的 npm 包,它提供了一个可以让青蛙跳跃的函数。它可以被用作一个简单的游戏或者某些社交媒体上的一些特效。无论你是初学者还是有经验的开发者,都可以通过此教程学习...

    2 年前

相关推荐

    暂无文章