获取所有元素的触发事件

2023-11-22

为了提供一些背景信息,我正在进行一项专注于数字营销和用户体验的研究。为了进行研究,我必须能够从 UI 中的每个组件获取事件日志,这样我就能够创建可用性模式的数据集。

要在网络界面中执行此操作,例如使用 JavaScript,这非常简单。

window.addEventListener("someEvent", (e) => {//do something with the data});

The eelement 为我提供了我需要的一切,如果我想监听所有窗口事件,我可以通过窗口对象事件运行 for 循环,并为每个事件添加一个事件侦听器。我的问题是移动开发。出于跨应用程序的原因,我是否正在使用 React Native 来尝试创建与window.addEventListener到移动应用程序。

这是我第一次使用 React Native。经过一番搜索,我现在知道 React Native 没有 window 对象(至少不是我们在 JavaScript 中理解的 window 对象),并且界面被转换为平台原生组件,所以document.getElementBy...也不行。

我想到的是refs。我只需要添加对顶部组件的引用App。那么到目前为止我所做的工作是:

export default function App() {
  const viewRef = useRef();

  useEffect(() => {
    //I can use ref here to iterate through all events of View and
    //bind event listeners to it
  }, [viewRef]);

  return (
    <View
      ref={viewRef}
      style={styles.container}
      onTouchEnd={(e) => {
        console.log(e.target);
      }}
    >
      <DummyComponent />
    </View>
  );
}

onTouchEnd事件绑定到顶层组件,因此我可以获得它的子组件的所有内容。在那个 useEffect 中,我可以做与 JavaScript 窗口相同的事情。

所以我想这是一种方法。然而,在我的研究中,我希望使任何 React Native 应用程序能够开始无缝记录事件。最先进的技术是创建一个依赖项,只需安装它即可记录所有内容。也就是说,如何迭代 React Native 应用程序来查找视图并绑定其事件,而不需要向实际组件添加任何内容?

在 JavaScript 中,它会是这样的:

document.getElementsByTagName("View").map((view) => {//bind view events});

所以我不确定这是否有帮助,但您可以在应用程序启动时更改组件的 defaultProps。

因此,以您的代码为例,您可以执行以下操作:

const listener = e => {
  console.log(e);
}

View.defaultProps = {
  ...View.defaultProps, // maintains original default props
  onTouchEnd: listener
};

基本上这样你就可以为每个视图组件拥有一个全局监听器

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取所有元素的触发事件 的相关文章

  • 以下文档我无法创建 Vue.js 3 的实例

    The code https stackblitz com edit vue ttt file src main js https stackblitz com edit vue ttt file src main js 问题 我正在尝试在
  • 更新存储在 chrome 扩展本地存储中的对象

    我正在开发一个 chrome 扩展 我将存储服务器发送的对象 例如 我将收到 命令 id 1 类型 A 大小 B 优先级 C 如果我有一个数据库 我会将其作为表中的一行插入commands 使用 chrome storage 我将这些对象的
  • JavaScript 相当于 Python 的参数化 string.format() 函数

    这是 Python 示例 gt gt gt Coordinates latitude longitude format latitude 37 24N longitude 115 81W Coordinates 37 24N 115 81W
  • 我可以在 GWT 中使用第三方 Javascript 库吗

    例如穆工具 用 js 编码对我来说很舒服 但显然不适合所有人 你当然可以 最好的事情就是给自己写一些好看的JavaScript 覆盖类型 http code google com webtoolkit doc latest DevGuide
  • Apache Thrift Java-Javascript 通信

    我正在编写一个基于 Apache Thrift 的 Java 服务器 它将从 Javascript 客户端接收数据 我已经完成了 Java 服务器 但问题是我可以获得 Javascript 客户端的工作示例 我无法找到一个好的示例 构建文档
  • EmberJS:对象作为查询参数来刷新模型

    我遵循了查询参数指南 http guides emberjs com v1 11 0 routing query params http guides emberjs com v1 11 0 routing query params 而且效
  • 如何通过setTimeout函数定期打印数字?

    var i 0 function counter for i i lt 100 i setTimeout gt console log i 2000 counter 我想以 2 秒的间隔打印 i 但它立即打印 每次打印调用只需要几微秒 为什
  • 检查用户设备的 GPS 是否开启

    我正在使用 jQuery Mobile 和 PHP 开发一个应用程序 我没有使用 Phonegap 或其他框架 我需要找到用户的geolocation 如果用户设备的 GPS 关闭 那么我无法获取位置 现在我需要查找用户设备的 GPS 是否
  • 使用javascript以编程方式触发iOS safari中的复制菜单?

    我正在尝试实现一种用户友好的方式 将一些文本从文本输入字段复制到 iOS Safari 上的剪贴板 我知道无法在这个平台上以编程方式完成此操作 但我希望能够尽可能地指导用户体验 在 iOS Safari 上 当用户手动突出显示某些文本时 会
  • 设置状态时重新渲染过多 - useSWR

    我在用useSWR https swr vercel app docs data fetching获取数据 然后使用数据 我想通过使用reduce 获得总计 如果我 console log 输出该值 它工作正常 但一旦我尝试使用该值设置状态
  • Chrome --app 相当于 Firefox\IE

    我有一个网络应用程序 客户要求单击不同按钮时更改浏览器窗口大小 我发现在那link https stackoverflow com questions 13436855 launch google chrome from the comma
  • 可以禁用幻灯片的触摸模拟但不能禁用滚动条(危险的滑动器)吗?

    我的页面上有一个危险的滑动器 它成功地模拟了幻灯片和随附滚动条上的触摸事件 允许单击鼠标并移动以向左或向右滑动幻灯片 这很好 但我现在在滑动器内的幻灯片上调用了可拖动 这意味着我需要停止此触摸模拟 拖动幻灯片并同时移动它们会引起混乱 但仅限
  • 播放没有音频标签的音频

    是否可以在没有音频标签的情况下仅使用 javascript 播放音频 我通过 tinyMce 编辑器注入脚本 因为我无权访问网站的后端 并且它不支持客户端的音频标签 她只想要当您将鼠标悬停在图像上时发出简单的声音 我已经完成了所有设置 但是
  • 如何将MathJax公式转换为img

    Mathjax 现在在我的项目中运行良好 但有一个问题 有没有办法将MathJax的公式 纯html和css 转换成img文件 我可以保存 MathJax 可以配置为生成 SVG 看http docs mathjax org en late
  • 如何解决“消息端口在收到响应之前已关闭”的问题。在 JavaScript 中的 window.location.reload() 之后

    我遇到了 javascript 问题 从 chrome v73 0 3683 86 开始 每当我在 window location reload 函数之后运行 javascript 代码时 它总是给我错误 Unchecked runtime
  • onPress 方法中箭头函数与普通函数的行为

    正在学习 Native React 并学习更多关于 javascript 的知识 所以我仍然不明白它的行为的很多事情 我使用 TouchableOpacity 及其 onPress 属性创建了一个按钮组件 为了让它工作 我必须发送我想要执行
  • 如何在 TypeScript 中使用 navigation.replace ?

    我试图在我的代码中使用它 const navigation useNavigation navigation replace AllFriends 但我不断收到错误消息 Property replace does not exist on
  • Graphql 将多个查询合并(组合)为一个?

    我正在尝试使用 JavaScript 将多个 GraphQL 查询合并为一个查询 我正在寻找这样的东西 let query3 mergeQueries query1 query2 我们事先不知道哪些查询将被组合 假设我有这样的查询 输入查询
  • jQuery Mobile + Admob:轮换?

    我使用 jQuery Mobile 框架创建了一个移动应用程序 所有页面都在index php中加载 使用 div 在每个页面的页脚中 我添加了Admob代码 div div div
  • 将引导程序弹出框保留在视口内

    我正在尝试使用带有按钮的侧边栏创建一个菜单 每个按钮都有一个指定的包含相关数据的弹出窗口 不幸的是 其中一个弹出窗口可能包含任意数量的行 并且在某些情况下它可能部分位于视口之外 See http jsfiddle net bfd9f 1 h

随机推荐

  • 在 QRubberband 上实现调整大小手柄? QSizeGrip 相关吗?

    我想让我的QRubberband实例用户可调整大小 我见过这个问题here但没有解决办法 用例是 用户可以在照片上拖出选择框 然后通过拖动来进行微调QRubberband边距以更改几何图形 或通过拖动选择来重新定位现有几何图形 我已经实现了
  • 在IOS 11中,后台的DeviceMotion停止工作

    我的应用程序在后台报告并记录位置 高度 旋转和加速度计数据 DeviceMotion 这在 ios 10 3 3 上运行良好 在 iOS 11 上 设备锁定时我无法再访问运动数据 不过 高度数据和位置数据仍在传输到控制台 IOS 11 中是
  • Excel 数据透视表 - 多列

    我正在尝试使用以下数据在 Excel 中创建数据透视表 我试图得出的最终结果 使用枢轴 是这样的摘要 但是我不知道如何让 Excel 计算 添加 考虑所有列 我可以为每个单独的字段 列创建一个数据透视表 但无法弄清楚如何将数据编译在一起 请
  • Lua 中元方法的继承

    我非常喜欢 programming in lua 16 1 16 2 中如何描述面向对象编程 http www lua org pil 16 1 html http www lua org pil 16 2 html 并愿意遵循这种方法 但
  • 如何在flutter中获取唯一的设备ID?

    在 Android 中我们有 Settings Secure ANDROID ID 我不知道 iOS 的等效项 有没有flutter插件或者一种方法可以在flutter中获取Android和IOS的唯一设备ID 空安全代码 Use 设备信息
  • UML 图表在“现实世界”中使用的频率如何? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 几乎我的每一门编程课程都使用了 UML 但没有人真正解释过它何时何地可以在专业环境中使用 是否对项目中的每个文件都执行了此操作 或者是否有一些您何时需要使用它的经验法则 另外 它更常见的是
  • 如何在 Javascript 中检测 ALT 键被按下?

    We are creating a web user interface that looks like a desktop window Now we need to handle the Alt key When Alt key is
  • 如何在 apollo 客户端中将 Mutations 链接在一起

    我的状态中存储了一堆信息 我需要使用突变将其传递到我的 graphQL 服务器 但我需要在调用下一个突变之前使用每个突变的结果 因为我需要 在我的数据库中创建一个新对象 使用为该对象生成的 id 创建另一个对象 修改原对象 存储第二个对象生
  • 使用python通过串口发送十六进制

    这个周末我要做一个小项目 我有一个太阳能电池逆变器 丹佛斯 ULX 3600i 我将尝试将其连接到我的 Linux 机器 看看我是否可以从中获取数据 创建多少能量 例如统计数据 其上有一个用于RJ45连接的输入 但带有RS485 我用电缆通
  • 密度图下的面积不等于 1

    我正在尝试使用 ggplot 绘制概率密度图 我的问题是曲线下的面积不等于一 感谢建议 示例图表 生成此图表的代码如下 Y 轴看起来像是小型垃圾箱的计数 而不是落入该垃圾箱的概率 示例代码here 是我在准备此图表时借鉴的来源之一 示例代码
  • Spring JavaConfig:为自定义 Servlet 添加映射

    在基于 javaconfig 的 Spring 4 0 项目中 如何将某个 URL 的映射添加到除 Spring DispatcherServlet 之外的 Servlet 我的情况是 我想使用 H2 数据库中的 h2console 该数据
  • 尝试了解编写 Python/C++ 混合体的链接过程

    我想开始更多地了解如何使用 SWIG 和其他方法来连接 Python 和 C 首先 我想编译这个简单的程序另一个帖子 include
  • Android,前置和后置摄像头方向,横向

    在我的相机应用程序中 您可以在前置摄像头和后置摄像头之间切换 当我用后置摄像头拍照时 图片与预览所示相同 但是当我切换到前置摄像头时 图片是镜像的 我认为这与前置和后置摄像头处于横向模式有关 我已经尝试了几乎所有给出的答案 如果有人能指出我
  • 传递给 Illuminate\Auth\Guard::login() 的参数 1 必须实现接口 Illuminate\Auth\UserInterface,给定 open 为 null:

    我使用 OAuth2 执行 Facebook 登录 然后使用 Laravel 4 的内置身份验证系统让用户在重新访问时重新登录 对于大多数用户来说 我认为我所拥有的没有任何问题 但对于一名用户来说 他在登录时看到以下错误 ErrorExce
  • 从 Grails 中的布局视图访问模型

    我在 Grails 中使用布局支持 sitemesh 效果很好 我想调整我的布局 使其取决于用户是否登录 我的 grails app views layouts main gsp 包含以下代码
  • 如何使用 awk 将带标题的新列添加到 csv

    我在处理 CSV 的 bash 脚本中使用了一些 awk awk 这样做 ORIG FILE score model csv NEW FILE updates score model csv awk v d 2017 01 F BEGIN
  • Python .split() 不带 'u

    在Python中 如果我有一个像这样的字符串 a Hello to everybody 我也这么做 a split 然后我得到 u Hello u to u everybody 这只是一个例子 我怎样才能得到一个简单的列表而不让你烦恼 Th
  • 如何将对象传递给公开的 luaj 函数?

    我正在尝试使用 Luaj java 构建一个控制器 我有以下java类 public class Duck public void talk System out println Duck quacks public void walk S
  • 检测溢出中的滚动尝试:隐藏页面?

    我想检测用户何时尝试在我的页面上向上或向下滚动 但由于我不想允许实际滚动 所以我设置了一个溢出 隐藏主体 代码是这样的 html body css overflow hidden window scroll function event c
  • 获取所有元素的触发事件

    为了提供一些背景信息 我正在进行一项专注于数字营销和用户体验的研究 为了进行研究 我必须能够从 UI 中的每个组件获取事件日志 这样我就能够创建可用性模式的数据集 要在网络界面中执行此操作 例如使用 JavaScript 这非常简单 win