diff --git a/doc/README_CN.md b/doc/README_CN.md
index 2fb1638..c2ac257 100644
--- a/doc/README_CN.md
+++ b/doc/README_CN.md
@@ -49,7 +49,7 @@ Eruda 是一个专为手机网页前端设计的调试面板,类似 DevTools
通过CDN使用:
```html
-
+
```
diff --git a/doc/UTIL_API.md b/doc/UTIL_API.md
index a49515a..36d2385 100644
--- a/doc/UTIL_API.md
+++ b/doc/UTIL_API.md
@@ -1743,6 +1743,21 @@ query.stringify({foo: 'bar', eruda: 'true'}); // -> 'foo=bar&eruda=true'
query.parse('name=eruda&name=eustia'); // -> {name: ['eruda', 'eustia']}
```
+## ready
+
+Invoke callback when dom is ready, similar to jQuery ready.
+
+|Name|Type |Desc |
+|----|--------|-----------------|
+|fn |function|Callback function|
+
+```javascript
+ready(function ()
+{
+ // It's safe to manipulate dom here.
+});
+```
+
## repeat
Repeat string n-times.
diff --git a/src/Network/Network.js b/src/Network/Network.js
index 8ac3bfe..88da34e 100644
--- a/src/Network/Network.js
+++ b/src/Network/Network.js
@@ -336,7 +336,7 @@ export default class Network extends Tool
if (!cfg.get('disablePerformance'))
{
- this._getPerformanceTimingData();
+ util.ready(() => this._getPerformanceTimingData());
renderData.data = this._performanceTimingData;
renderData.timing = this._performanceTiming;
}
diff --git a/src/lib/util.js b/src/lib/util.js
index a1f18f0..a39bbc7 100644
--- a/src/lib/util.js
+++ b/src/lib/util.js
@@ -5401,6 +5401,55 @@ module.exports = (function ()
return exports;
})();
+ /* ------------------------------ ready ------------------------------ */
+
+ _.ready = (function ()
+ {
+ /* Invoke callback when dom is ready, similar to jQuery ready.
+ *
+ * |Name|Type |Desc |
+ * |----|--------|-----------------|
+ * |fn |function|Callback function|
+ *
+ * ```javascript
+ * ready(function ()
+ * {
+ * // It's safe to manipulate dom here.
+ * });
+ * ```
+ */
+
+ /* module
+ * env: browser
+ * test: browser
+ */
+
+ var fns = [],
+ listener,
+ doc = document,
+ hack = doc.documentElement.doScroll,
+ domContentLoaded = 'DOMContentLoaded',
+ loaded = (hack ? /^loaded|^c/ : /^loaded|^i|^c/).test(doc.readyState);
+
+ if (!loaded)
+ {
+ doc.addEventListener(domContentLoaded, listener = function ()
+ {
+ doc.removeEventListener(domContentLoaded, listener);
+ loaded = 1;
+ /* eslint-disable no-cond-assign */
+ while (listener = fns.shift()) listener();
+ });
+ }
+
+ function exports(fn)
+ {
+ loaded ? setTimeout(fn, 0) : fns.push(fn)
+ }
+
+ return exports;
+ })();
+
/* ------------------------------ rtrim ------------------------------ */
var rtrim = _.rtrim = (function ()