Add: polyfill element method
This commit is contained in:
parent
6435985fe6
commit
293eb1b1e3
|
@ -1,6 +1,53 @@
|
|||
if (!Object.entries) {
|
||||
Object.entries = obj => Object.keys(obj).map(k => [k, obj[k]]);
|
||||
}
|
||||
if (!Object.values) {
|
||||
Object.values = obj => Object.keys(obj).map(k => obj[k]);
|
||||
}
|
||||
'use strict';
|
||||
|
||||
(() => {
|
||||
if (!Object.entries) {
|
||||
Object.entries = obj => Object.keys(obj).map(k => [k, obj[k]]);
|
||||
}
|
||||
if (!Object.values) {
|
||||
Object.values = obj => Object.keys(obj).map(k => obj[k]);
|
||||
}
|
||||
if (typeof document === 'object') {
|
||||
const ELEMENT_METH = {
|
||||
append: {
|
||||
base: [Element, Document, DocumentFragment],
|
||||
fn: (node, frag) => {
|
||||
node.appendChild(frag);
|
||||
}
|
||||
},
|
||||
prepend: {
|
||||
base: [Element, Document, DocumentFragment],
|
||||
fn: (node, frag) => {
|
||||
node.insertBefore(frag, node.firstChild);
|
||||
}
|
||||
},
|
||||
before: {
|
||||
base: [Element, CharacterData, DocumentType],
|
||||
fn: (node, frag) => {
|
||||
node.parentNode.insertBefore(frag, node);
|
||||
}
|
||||
},
|
||||
after: {
|
||||
base: [Element, CharacterData, DocumentType],
|
||||
fn: (node, frag) => {
|
||||
node.parentNode.insertBefore(frag, node.nextSibling);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
for (const [key, {base, fn}] of Object.entries(ELEMENT_METH)) {
|
||||
for (const cls of base) {
|
||||
if (cls.prototype[key]) {
|
||||
continue;
|
||||
}
|
||||
cls.prototype[key] = function (...nodes) {
|
||||
const frag = document.createDocumentFragment();
|
||||
for (const node of nodes) {
|
||||
frag.appendChild(typeof node === 'string' ? document.createTextNode(node) : node);
|
||||
}
|
||||
fn(this, frag);
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
})();
|
||||
|
|
Loading…
Reference in New Issue
Block a user