# @toojs/dove

> An common iFrame resolution.

Latest version **0.1.4** (published 2019-12-10) · MIT license · 0 weekly downloads

## Install

```sh
npm install @toojs/dove
pnpm add @toojs/dove
yarn add @toojs/dove
bun add @toojs/dove
```

## Health

**Score 30/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.4 |
| Published | 2019-12-10 |
| First published | 2019-10-31 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >=10.0.0 |
| Dependencies | 5 |
| Unpacked size | 533.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Junshu Wang |
| Maintainers | js-wang |
| Keywords | dove, iFrame |

## Links

- npm: https://www.npmjs.com/package/@toojs/dove
- npm.io page: https://npm.io/package/@toojs/dove

## Dependencies (5)

- [core-js](https://npm.io/package/core-js.md) 3
- [history](https://npm.io/package/history.md) ^4.9.0
- [query-string](https://npm.io/package/query-string.md) ^6.8.2
- [eventemitter3](https://npm.io/package/eventemitter3.md) ^4.0.0
- [@toojs/postmate](https://npm.io/package/@toojs/postmate.md) ^1.5.4

## Recent versions

- 0.1.4 (latest) — 2019-12-10
- 0.1.3 — 2019-10-31
- 0.1.2 — 2019-10-31

## README

# dove

> An common iframe resolution.

## Table of Contents

- [Install](#install)
- [Usage](#usage)
- [API](docs/API.md)
- [Contributors](#contributors)
- [License](#license)

## Install

```sh
npm install @weiyi/dove --registry=http://npm.guahao-inc.com
```

## Usage

```javascript
// 宿主页面
import Dove from '@weiyi/dove';
import createIndicatorPlugin from '@weiyi/dove/lib/plugins/indicator';

const dove = new Dove({
  // 全局钩子注册
  hooks: {
    success: [
      () => {
        // iframe 成功挂载后
      }
    ],
    pluginApply: [
      (pluginName, plugin) => {
        // 插件应用后的事件
      }
    ]
  },
});

dove.use(createIndicatorPlugin());
dove.load('/child.html', '#container', {
  // postmate model options
  model: {
    foo: 'blabla',
  },
});
```

```javascript
// iFrame 内容页面
import Dove from 'dove';

const parasite = new Dove.Injection({
  // 子页面插件注册
  plugins: [],
  // 可以重复注册 model, 但是相同的 model 会被覆盖
  model: {
    foo: 'blablabla',
    someMethod: function() {
      // do something
    }
  }
})

parasite.init();
```

### 举个例子

#### 更多初始化配置项

```javascript
const hostIns = new Dove({
  // frame 挂载点
  container: '#container',
  // frame 页面加载超时时间，默认为 20 秒
  timeout: 20 * 1000,
  // 全局钩子注册
  hooks: {
    success: [
      () => {
        // iframe 成功挂载后
      }
    ],
    error: [
      (error) => {
        // 发生错误时触发的生命周期钩子
      }
    ],
    pluginApply: [
      (pluginName, plugin) => {
        // 插件应用后的事件
      }
    ]
  },
});
```

#### 新的挂载点

```javascript
const hostIns = new Dove({
  container: '#container',
});

hostIns.load('/child2.html', {
  container: '#another-container',
});
```

#### 增加自定义事件监听

```javascript
const hostIns = new Dove({
  container: '#container',
});

hostIns.load('/child2.html');

hostIns.on('custom-event', function() {
  // do something

  // 手动移出事件
  this.off('custom-event');
});

// 一次性事件，
hostIns.once(
  'custom-event2',
  function() {
    // do something
  }
);

hostIns.dispatch('custom-event');
// custom-event2 会在执行一次后自动销毁
hostIns.dispatch('custom-event2');
```
## Contributors

| Name            |
| --------------- |
| **Junshu Wang** |

##

[npm]: https://www.npmjs.com/
[yarn]: https://yarnpkg.com/

---
_Source: https://npm.io/package/@toojs/dove · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
