Del: SafeMutationObserver

This commit is contained in:
surunzi
2018-04-09 23:57:30 +08:00
parent 92d4530a2b
commit a15360838b
6 changed files with 606 additions and 611 deletions

View File

@@ -446,7 +446,7 @@ Logging methods.
TRACE, DEBUG, INFO, WARN, ERROR and SILENT. TRACE, DEBUG, INFO, WARN, ERROR and SILENT.
```javascript ```javascript
var logger = new Logger('eris', logger.level.ERROR); var logger = new Logger('eris', Logger.level.ERROR);
logger.trace('test'); logger.trace('test');
// Format output. // Format output.
@@ -468,12 +468,12 @@ logger.on('debug', function (argList)
}); });
``` ```
## SafeMutationObserver ## MutationObserver
Safe MutationObserver, does nothing if MutationObserver is not supported. Safe MutationObserver, does nothing if MutationObserver is not supported.
```javascript ```javascript
var observer = new DomObserver(function (mutations) var observer = new MutationObserver(function (mutations)
{ {
// Do something. // Do something.
}); });
@@ -678,15 +678,16 @@ Perform an asynchronous HTTP request.
Available options: Available options:
|Name |Type |Desc | |Name |Type |Desc |
|-------------|-------------|------------------------| |---------------------------------------------|-------------|---------------------------|
|url |string |Request url | |url |string |Request url |
|data |string object|Request data | |data |string object|Request data |
|dataType=json|string |Response type(json, xml)| |dataType=json |string |Response type(json, xml) |
|success |function |Success callback | |contentType=application/x-www-form-urlencoded|string |Request header Content-Type|
|error |function |Error callback | |success |function |Success callback |
|complete |function |Callback after request | |error |function |Error callback |
|timeout |number |Request timeout | |complete |function |Callback after request |
|timeout |number |Request timeout |
### get ### get
@@ -792,10 +793,10 @@ castPath('a.b.c', {'a.b.c': true}); // -> ['a.b.c']
Split array into groups the length of given size. Split array into groups the length of given size.
|Name |Type |Desc | |Name |Type |Desc |
|--------|------|--------------------| |------|------|--------------------|
|arr |array |Array to process | |arr |array |Array to process |
|[size=1]|number|Length of each chunk| |size=1|number|Length of each chunk|
```javascript ```javascript
chunk([1, 2, 3, 4], 2); // -> [[1, 2], [3, 4]] chunk([1, 2, 3, 4], 2); // -> [[1, 2], [3, 4]]
@@ -1257,11 +1258,11 @@ identity('a'); // -> 'a'
Get the index at which the first occurrence of value. Get the index at which the first occurrence of value.
|Name |Type |Desc | |Name |Type |Desc |
|-----------|------|--------------------| |---------|------|--------------------|
|arr |array |Array to search | |arr |array |Array to search |
|val |* |Value to search for | |val |* |Value to search for |
|[fromIdx=0]|number|Index to search from| |fromIdx=0|number|Index to search from|
```javascript ```javascript
idxOf([1, 2, 1, 2], 2, 2); // -> 3 idxOf([1, 2, 1, 2], 2, 2); // -> 3
@@ -1996,7 +1997,7 @@ This accumulates the arguments passed into an array, after a given index.
|return |function|Generated function with rest parameters| |return |function|Generated function with rest parameters|
```javascript ```javascript
var paramArr = _.restArgs(function (rest) { return rest }); var paramArr = restArgs(function (rest) { return rest });
paramArr(1, 2, 3, 4); // -> [1, 2, 3, 4] paramArr(1, 2, 3, 4); // -> [1, 2, 3, 4]
``` ```

View File

@@ -1,23 +0,0 @@
/* Safe MutationObserver, does nothing if MutationObserver is not supported.
*
* ```javascript
* var observer = new DomObserver(function (mutations)
* {
* // Do something.
* });
* observer.observe(document.htmlElement);
* observer.disconnect();
* ```
*/
exports = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
if (!exports)
{
exports = class MutationObserver {
constructor() {}
observe() {}
disconnect() {}
takeRecords() {}
};
}

View File

@@ -8,7 +8,7 @@ import {
evalCss, evalCss,
$, $,
keys, keys,
SafeMutationObserver, MutationObserver,
each, each,
isErudaEl, isErudaEl,
toStr, toStr,
@@ -350,7 +350,7 @@ export default class Elements extends Tool
} }
_initObserver() _initObserver()
{ {
this._observer = new SafeMutationObserver(mutations => this._observer = new MutationObserver(mutations =>
{ {
each(mutations, mutation => this._handleMutation(mutation)); each(mutations, mutation => this._handleMutation(mutation));
}); });

View File

@@ -12,7 +12,7 @@ import {
orientation, orientation,
isCrossOrig, isCrossOrig,
ajax, ajax,
SafeMutationObserver, MutationObserver,
isErudaEl, isErudaEl,
toArr, toArr,
concat, concat,
@@ -408,7 +408,7 @@ export default class Resources extends Tool
} }
_initObserver() _initObserver()
{ {
this._observer = new SafeMutationObserver(mutations => this._observer = new MutationObserver(mutations =>
{ {
let needToRender = false; let needToRender = false;
each(mutations, mutation => each(mutations, mutation =>

View File

@@ -359,37 +359,6 @@ export var freeze = _.freeze = (function ()
return exports; return exports;
})(); })();
/* ------------------------------ SafeMutationObserver ------------------------------ */
export var SafeMutationObserver = _.SafeMutationObserver = (function (exports)
{
/* Safe MutationObserver, does nothing if MutationObserver is not supported.
*
* ```javascript
* var observer = new DomObserver(function (mutations)
* {
* // Do something.
* });
* observer.observe(document.htmlElement);
* observer.disconnect();
* ```
*/
exports = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
if (!exports)
{
exports = class MutationObserver {
constructor() {}
observe() {}
disconnect() {}
takeRecords() {}
};
}
return exports;
})({});
/* ------------------------------ noop ------------------------------ */ /* ------------------------------ noop ------------------------------ */
export var noop = _.noop = (function () export var noop = _.noop = (function ()
@@ -626,10 +595,10 @@ export var chunk = _.chunk = (function ()
{ {
/* Split array into groups the length of given size. /* Split array into groups the length of given size.
* *
* |Name |Type |Desc | * |Name |Type |Desc |
* |--------|------|--------------------| * |------|------|--------------------|
* |arr |array |Array to process | * |arr |array |Array to process |
* |[size=1]|number|Length of each chunk| * |size=1|number|Length of each chunk|
* *
* ```javascript * ```javascript
* chunk([1, 2, 3, 4], 2); // -> [[1, 2], [3, 4]] * chunk([1, 2, 3, 4], 2); // -> [[1, 2], [3, 4]]
@@ -718,11 +687,11 @@ export var idxOf = _.idxOf = (function ()
{ {
/* Get the index at which the first occurrence of value. /* Get the index at which the first occurrence of value.
* *
* |Name |Type |Desc | * |Name |Type |Desc |
* |-----------|------|--------------------| * |---------|------|--------------------|
* |arr |array |Array to search | * |arr |array |Array to search |
* |val |* |Value to search for | * |val |* |Value to search for |
* |[fromIdx=0]|number|Index to search from| * |fromIdx=0|number|Index to search from|
* *
* ```javascript * ```javascript
* idxOf([1, 2, 1, 2], 2, 2); // -> 3 * idxOf([1, 2, 1, 2], 2, 2); // -> 3
@@ -3826,6 +3795,46 @@ export var Enum = _.Enum = (function (exports)
return exports; return exports;
})({}); })({});
/* ------------------------------ MutationObserver ------------------------------ */
export var MutationObserver = _.MutationObserver = (function (exports)
{
/* Safe MutationObserver, does nothing if MutationObserver is not supported.
*
* ```javascript
* var observer = new MutationObserver(function (mutations)
* {
* // Do something.
* });
* observer.observe(document.htmlElement);
* observer.disconnect();
* ```
*/
/* module
* env: browser
* test: browser
*/
/* dependencies
* Class
*/
exports = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
if (!exports)
{
exports = Class({
initialize: function MutationObserver() {},
observe: function () {},
disconnect: function () {},
takeRecords: function () {}
});
}
return exports;
})({});
/* ------------------------------ Select ------------------------------ */ /* ------------------------------ Select ------------------------------ */
export var Select = _.Select = (function (exports) export var Select = _.Select = (function (exports)
@@ -5525,7 +5534,7 @@ export var restArgs = _.restArgs = (function ()
* |return |function|Generated function with rest parameters| * |return |function|Generated function with rest parameters|
* *
* ```javascript * ```javascript
* var paramArr = _.restArgs(function (rest) { return rest }); * var paramArr = restArgs(function (rest) { return rest });
* paramArr(1, 2, 3, 4); // -> [1, 2, 3, 4] * paramArr(1, 2, 3, 4); // -> [1, 2, 3, 4]
* ``` * ```
*/ */
@@ -5787,7 +5796,7 @@ export var Logger = _.Logger = (function (exports)
* TRACE, DEBUG, INFO, WARN, ERROR and SILENT. * TRACE, DEBUG, INFO, WARN, ERROR and SILENT.
* *
* ```javascript * ```javascript
* var logger = new Logger('eris', logger.level.ERROR); * var logger = new Logger('eris', Logger.level.ERROR);
* logger.trace('test'); * logger.trace('test');
* *
* // Format output. * // Format output.
@@ -6928,15 +6937,16 @@ export var ajax = _.ajax = (function ()
* *
* Available options: * Available options:
* *
* |Name |Type |Desc | * |Name |Type |Desc |
* |-------------|-------------|------------------------| * |---------------------------------------------|-------------|---------------------------|
* |url |string |Request url | * |url |string |Request url |
* |data |string object|Request data | * |data |string object|Request data |
* |dataType=json|string |Response type(json, xml)| * |dataType=json |string |Response type(json, xml) |
* |success |function |Success callback | * |contentType=application/x-www-form-urlencoded|string |Request header Content-Type|
* |error |function |Error callback | * |success |function |Success callback |
* |complete |function |Callback after request | * |error |function |Error callback |
* |timeout |number |Request timeout | * |complete |function |Callback after request |
* |timeout |number |Request timeout |
* *
* ### get * ### get
* *
@@ -7026,13 +7036,15 @@ export var ajax = _.ajax = (function ()
{ {
data = query.stringify(data); data = query.stringify(data);
url += url.indexOf('?') > -1 ? '&' + data : '?' + data; url += url.indexOf('?') > -1 ? '&' + data : '?' + data;
} else } else if (options.contentType === 'application/x-www-form-urlencoded')
{ {
if(isObj(data)) data = query.stringify(data); if(isObj(data)) data = query.stringify(data);
} else if (options.contentType === 'application/json') {
if(isObj(data)) data = JSON.stringify(data);
} }
xhr.open(type, url, true); xhr.open(type, url, true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.setRequestHeader('Content-Type', options.contentType);
if (timeout > 0) if (timeout > 0)
{ {
@@ -7055,6 +7067,7 @@ export var ajax = _.ajax = (function ()
error: noop, error: noop,
complete: noop, complete: noop,
dataType: 'json', dataType: 'json',
contentType: 'application/x-www-form-urlencoded',
data: {}, data: {},
xhr: function () { return new XMLHttpRequest() }, xhr: function () { return new XMLHttpRequest() },
timeout: 0 timeout: 0

View File

@@ -1802,15 +1802,16 @@
* *
* Available options: * Available options:
* *
* |Name |Type |Desc | * |Name |Type |Desc |
* |-------------|-------------|------------------------| * |---------------------------------------------|-------------|---------------------------|
* |url |string |Request url | * |url |string |Request url |
* |data |string object|Request data | * |data |string object|Request data |
* |dataType=json|string |Response type(json, xml)| * |dataType=json |string |Response type(json, xml) |
* |success |function |Success callback | * |contentType=application/x-www-form-urlencoded|string |Request header Content-Type|
* |error |function |Error callback | * |success |function |Success callback |
* |complete |function |Callback after request | * |error |function |Error callback |
* |timeout |number |Request timeout | * |complete |function |Callback after request |
* |timeout |number |Request timeout |
* *
* ### get * ### get
* *
@@ -1900,13 +1901,15 @@
{ {
data = query.stringify(data); data = query.stringify(data);
url += url.indexOf('?') > -1 ? '&' + data : '?' + data; url += url.indexOf('?') > -1 ? '&' + data : '?' + data;
} else } else if (options.contentType === 'application/x-www-form-urlencoded')
{ {
if(isObj(data)) data = query.stringify(data); if(isObj(data)) data = query.stringify(data);
} else if (options.contentType === 'application/json') {
if(isObj(data)) data = JSON.stringify(data);
} }
xhr.open(type, url, true); xhr.open(type, url, true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.setRequestHeader('Content-Type', options.contentType);
if (timeout > 0) if (timeout > 0)
{ {
@@ -1929,6 +1932,7 @@
error: noop, error: noop,
complete: noop, complete: noop,
dataType: 'json', dataType: 'json',
contentType: 'application/x-www-form-urlencoded',
data: {}, data: {},
xhr: function () { return new XMLHttpRequest() }, xhr: function () { return new XMLHttpRequest() },
timeout: 0 timeout: 0