* Add `recordCrossOriginIframe` setting * Set up messaging between iframes * should emit full snapshot event from iframe as mutation event * this.mirror was dropped on attachIframe * should use unique id for child of iframe * Cross origin iframe recording in `yarn live-stream` * Root iframe check thats supported by firefox * Live stream: Inject script in all frames * Record same origin and cross origin iframes differently * Should map Input events correctly * Turn on other tests * Fix compatibility with newer puppeteer * puppeteer vs 12 seems stable without to many changes needed * normalize port numbers in snapshots * Handle scroll and ViewportResize events in cross origin iframe * Correctly map cross origin mutations * Map selection events for cross origin iframes * Map canvas mutations for cross origin iframes * Update snapshot to include canvas events * Skip all meta events * Support custom events as best we can in cross origin iframes * Use earliest version of puppeteer that works with cross origin live-stream * Map mouse/touch interaction events * Update snapshots for correctly mapped click events * Tweak tests for new puppeteer version * Map MediaInteraction correctly for cross origin iframes * Make tests consistent between high and low dpi devices * Make test less flaky * Make test less flaky * Make test less flaky * Make test less flaky * Add support for styles in cross origin iframes * Map traditional stylesheet mutations on cross origin iframes * Add todo * Add iframe mirror * Get iframe manager to use iframe mirrors internally * Rename `IframeMirror` to `CrossOriginIframeMirror` * Setup basic cross origin canvas webrtc streaming * Clean up removed canvas elements * reset style mirror on new full snapshot * Fix cross origin canvas webrtc streaming * Make emit optional * Run tests on github actions * Upload image artifacts from failed tests * Use newer github actions * Test: hopefully adding more wait will fix it * add extra wait * Fix image snapshot tests * Make tests run with new puppeteer version * upgrade eslint-plugin-jest * Chore: Remove travis ci as ci's running on github actions * Chore: Support recording cross origin iframe in repl * Force developers to update the cross origin iframe mapping when adding new events https://github.com/rrweb-io/rrweb/pull/1035#discussion_r1012516277 * Document cross origin iframe recording * Docs: cross origin iframes recording methods * Docs: AI translated, cross origin iframe recording * rename getParentId to getId * Migrate to @rrweb/types * Run on pull request * doc: improve Chinese doc * Rename `parentId` to `Id` Co-authored-by: Mark-Fenng <f18846188605@gmail.com>
71 lines
2.0 KiB
Markdown
71 lines
2.0 KiB
Markdown
# Dive Into Events
|
|
|
|
The events recorded by rrweb are a set of strictly-typed JSON data. You may discover some flexible ways to use them when you are familiar with the details.
|
|
|
|
## Data Types
|
|
|
|
Every event has a `timestamp` attribute to record the time it was emitted.
|
|
|
|
There is also a `type` attribute indicates the event's type, the semantic of event's type is:
|
|
|
|
```
|
|
type -> EventType.DomContentLoaded
|
|
event -> domContentLoadedEvent
|
|
|
|
type = EventType.Load
|
|
event -> loadedEvent
|
|
|
|
type -> EventType.FullSnapshot
|
|
event -> fullSnapshotEvent
|
|
|
|
type -> EventType.IncrementalSnapshot
|
|
event -> incrementalSnapshotEvent
|
|
|
|
type -> EventType.Meta
|
|
event -> metaEvent
|
|
|
|
type -> EventType.Custom
|
|
event -> customEvent
|
|
```
|
|
|
|
The EventType is Typescript's numeric enum, which is a self-increased number from 0 in runtime. You can find its definition in this [list](https://github.com/rrweb-io/rrweb/blob/9488deb6d54a5f04350c063d942da5e96ab74075/src/types.ts#L10).
|
|
|
|
In these kinds of events, the incrementalSnapshotEvent is the event that contains incremental data. You can use `event.data.source` to find which kind of incremental data it belongs to:
|
|
|
|
```
|
|
source -> IncrementalSource.Mutation
|
|
data -> mutationData
|
|
|
|
source -> IncrementalSource.MouseMove
|
|
data -> mousemoveData
|
|
|
|
source -> IncrementalSource.MouseInteraction
|
|
data -> mouseInteractionData
|
|
|
|
source -> IncrementalSource.Scroll
|
|
data -> scrollData
|
|
|
|
source -> IncrementalSource.ViewportResize
|
|
data -> viewportResizeData
|
|
|
|
source -> IncrementalSource.Input
|
|
data -> inputData
|
|
|
|
source -> IncrementalSource.TouchMove
|
|
data -> mouseInteractionData
|
|
|
|
source -> IncrementalSource.MediaInteraction
|
|
data -> mediaInteractionData
|
|
|
|
source -> IncrementalSource.StyleSheetRule
|
|
data -> styleSheetRuleData
|
|
|
|
source -> IncrementalSource.CanvasMutation
|
|
data -> canvasMutationData
|
|
|
|
source -> IncrementalSource.Font
|
|
data -> fontData
|
|
```
|
|
|
|
enum IncrementalSource's definition can be found in this [list](https://github.com/rrweb-io/rrweb/blob/98e71cd0d23628cd1fbdbe47664a65748084c4a4/packages/types/src/index.ts#L69).
|