ApoorvSaxena / ApoorvSaxena/lozad.js

Extending `load` function instead of overriding

未关闭
#235 4 条评论 3 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
JavaScript
星标
7.5k
派生
435
PR 合并指标
30 天内没有已合并 PR

描述

## Expected Behavior
I would like to extend `load` function not to override it, e.g. add dispatching some event, add some logs etc.

## Current Behavior
I can provide my own `load` function which override the default one. So if I write something like this:

```js
lozad('.lozad', {
load: function(el) {
console.log('loading element');
}
});
```

lazy loading will not work, because my function (with only `console.log`) will override the default one.

## Possible Solution
Export `load` function from `defaultConfig`, so I can do this:
```js
// lozad.js
export function load() {
...
}

export default function lozad() {
...
}
```

```js
// my-code.js
import lozad, { load } from 'lozad';

lozad('.lozad', {
load: function(el) {
console.log('loading element');
// dispatch my event
// do something
load();
}
});
```

## Context
I want to replace [`lazysizes`](https://github.com/aFarkas/lazysizes) with [`lozad`](https://github.com/ApoorvSaxena/lozad.js), but I need to dispatch [`lazybeforeunveil`](https://github.com/aFarkas/lazysizes#js-api---events) event.

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。