Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/growingio/gio-web-nodes-parser

Library of parsing nodes used by GrowingIO web SDK
https://github.com/growingio/gio-web-nodes-parser

Last synced: 6 days ago
JSON representation

Library of parsing nodes used by GrowingIO web SDK

Awesome Lists containing this project

README

        

# gio-web-nodes-parser

## 安装

```bash
npm i gio-web-nodes-parser --save
```

## Web 端/圈选使用

```js
import { GioWebNode } from 'gio-web-nodes-parser';

const gioWebNode: GIOWEBNODE = new GioNode(elementNode, actionType);
```

### 参数

| 参数 | 类型 | 必选 | 默认值 | 说明 |
|-------------|-------------------------------------------------------|------|-------|----------------|
| elementNode | Element | √ | 无 | 元素节点 |
| actionType | 'click' \| 'change' \| 'circleClick' \| 'circleHover' | √ | 无 | 当前响应事件类型 |

### 方法

#### trackNodes() => GIOWEBNODEINFO[]

获取事件节点信息(actionType 为 click 时,会向上冒泡查找符合条件的容器节点信息)

```js
gioWebNode.trackNodes();
```

### 返回属性

#### xpath: string 截取后的 xpath

#### fullXpath: string 完整的 xpath

#### skeleton: string 完整的 xpath 骨架

#### xcontent: string 最后 4 层样式+id

#### outFlow: boolean 真实节点是否脱离文档流

#### triggerEvent: 'VIEW_CLICK' | 'VIEW_CHANGE' 节点触发的事件类型

#### content?: Possible 元素内容

#### index?: Possible 相对位置

#### hyperlink?: Possible 元素链接

#### peerNodes?: Possible 同结构的兄弟节点

### Hybrid端使用

```js
import { GioHybridNode } from 'gio-web-nodes-parser';

const gioHybridNode: GIOHYBRIDNODE = new GioHybridNode({
webviewLeft,
webviewTop,
webviewWidth,
webviewHeight,
webviewZLevel
});
```

### 参数

| 参数 | 类型 | 必选 | 默认值 | 说明 |
|------------|-------------------------------------------------------------------|------|-------|--------|
| deviceInfo | { webviewLeft,webviewTop,webviewWidth,webviewHeight,webviewZLevel } | √ | 无 | 设备信息 |

### 方法

#### trackNodes() => GIOHYBRIDNODEINFO[]

获取指定根节点下当前屏幕可视范围内所有可圈选节点信息(并判断元素是否可见,被遮挡的元素会被过滤)

```js
const elements = gioHybridNode.trackNodes(root ?? document.body, {
isContainer: false,
zLevel: 0
});
```

获取指定根节点下当前屏幕可视范围内所有可圈选节点信息(忽略元素是否可见,返回被遮挡的元素)

```js
const elements = gioHybridNode.trackNodes(root ?? document.body, {
isContainer: false,
zLevel: 0
}, true);
```

### 返回属性

#### xpath: string 截取后的 xpath

#### fullXpath: string 完整的 xpath

#### skeleton: string 完整的 xpath 骨架

#### xcontent: string 最后 4 层样式+id

#### outFlow: boolean 真实节点是否脱离文档流

#### triggerEvent: 'VIEW_CLICK' \| 'VIEW_CHANGE' 节点触发的事件类型

#### content?: Possible\ 元素内容

#### index?: Possible\ 相对位置

#### hyperlink?: Possible\ 元素链接

#### peerNodes?: Possible\ 同结构的兄弟节点

#### top: number 节点矩位置信息

#### left: number 节点矩位置信息

#### width: number 节点矩位置信息

#### height: number 节点矩位置信息

#### zLevel: number 节点层级信息

#### nodeType: string 节点事件触发类型/节点标签名

#### href?: Possible\ 元素链接

#### parentXPath?: Possible\ 父级xpath